devotionMedlem sedan jan. 20013 582 inlägg Hej på er!
Jag har några tabeller som jag hämtar data från enligt:
sSQL =" SELECT CASE WHEN tblTimeType.[Name] is null THEN '**Saknas**' ELSE tblTimeType.[Name] END AS TimeType," _
& " tblTime.[Time] AS Hours, tblTime.[Time]* 60 AS Minutes" _
& " FROM tblcustomer" _
& " INNER JOIN tblTask" _
& " ON tblCustomer.[Nr] = tblTask.CustomerNr" _
& " LEFT JOIN tblTime" _
& " ON tblTask.[Id] = tblTime.TaskId" _
& " LEFT JOIN tblTimeType" _
& " ON tblTimeType.[Id] = tblTime.TimeTypeId"_
& " WHERE tblCustomer.Category = '" & sWorkGroupName & "'" _
& " And tblTime.StartDate >='" & tmStartDate & "'" _
& " And tblTime.StartDate < '" & tmStopDate & "'" _
& " ORDER BY TimeType"
utskrivet ser det ut så här:
SELECT CASE WHEN tblTimeType.[Name] is null THEN '**Saknas**' ELSE tblTimeType.[Name] END AS TimeType,
tblTime.[Time] AS Hours, tblTime.[Time]* 60 AS Minutes
FROM tblcustomer
INNER JOIN tblTask
ON tblCustomer.[Nr] = tblTask.CustomerNr
LEFT JOIN tblTime
ON tblTask.[Id] = tblTime.TaskId
LEFT JOIN tblTimeType
ON tblTimeType.[Id] = tblTime.TimeTypeId
WHERE tblCustomer.Category = 'Sigtuna'
And tblTime.StartDate >='2008-03-01 00:00:00.000'
And tblTime.StartDate < '2008-03-31 23:59:59.999'
ORDER BY TimeType
Om vi säger att de olika tidtyperna heter A, B och C, så listas ju alla i en lång lista nu.
Jag vill att endast ett A visas med den totala tiden för den tidtypen för perioden. Lika för B och C.
Hur gör man detta?
Peter SMedlem sedan dec. 20025 483 inlägg SELECT CASE WHEN tblTimeType.[Name] is null THEN '**Saknas**' ELSE tblTimeType.[Name] END AS TimeType,
sum(tblTime.[Time]) AS Hours, sum(tblTime.[Time])*60 AS Minutes
FROM tblcustomer
INNER JOIN tblTask
ON tblCustomer.[Nr] = tblTask.CustomerNr
LEFT JOIN tblTime
ON tblTask.[Id] = tblTime.TaskId
LEFT JOIN tblTimeType
ON tblTimeType.[Id] = tblTime.TimeTypeId
WHERE tblCustomer.Category = 'Sigtuna'
And tblTime.StartDate >='2008-03-01 00:00:00.000'
And tblTime.StartDate < '2008-03-31 23:59:59.999'
GROUP BY CASE WHEN tblTimeType.[Name] is null THEN '**Saknas**' ELSE tblTimeType.[Name] END
ORDER BY TimeType
devotionMedlem sedan jan. 20013 582 inlägg Då var jag det på spåret... :)
Jag skrev dock:
...
GROUP BY TimeType
...
och då blev det fel!
Thanx! :)
devotionMedlem sedan jan. 20013 582 inlägg Hur gör man för att summera ihop alla A, B och C som ABC och alla D, E och F som DEF
Mvh
Henrik
LarsGMedlem sedan dec. 200012 464 inlägg sum(case when tidtyp in ('A','B','C') then tblTime.[Time] else 0 end) as abc
devotionMedlem sedan jan. 20013 582 inlägg Hej igen!
Nu ser frågan ut så här:
SELECT CASE WHEN tblTimeType.[Name] is null THEN '**Saknas**' ELSE tblTimeType.[Name] END AS TimeType,
SUM(tblTime.[Time]) AS Hours,
SUM(tblTime.[Time]* 60) AS Minutes,
sum(case when tblTimeType.[Name] in ('01. Personlig omvårdnad','02. Serviceinsatser','C') then tblTime.[Time] else 0 end) as Sum1
FROM tblcustomer
INNER JOIN tblTask ON tblCustomer.[Nr] = tblTask.CustomerNr
LEFT JOIN tblTime ON tblTask.[Id] = tblTime.TaskId
LEFT JOIN tblTimeType ON tblTimeType.[Id] = tblTime.TimeTypeId
WHERE tblCustomer.Category = 'Sigtuna' And tblTime.StartDate >='2008-05-01 00:00:00.000' And tblTime.StartDate < '2008-05-31 23:59:59.999'
GROUP BY CASE WHEN tblTimeType.[Name] is null THEN '**Saknas**' ELSE tblTimeType.[Name] END
ORDER BY TimeType
Resultatet blir enligt bifogad bild.
Kan man få tilld et så här:
01. Personlig omvårdnad 15 0,25
02. Seviceinsatser 60 1
Summa 75 1,25
03. Sjukvård 45 0,75
Summa 45 0,75
04. Larm 60 1
05. Rehab 15 0,25
06. LASS 15 0,25
Summa 90 1,5
Total summa 210 3,50
Mvh
Henrik
Peter SMedlem sedan dec. 20025 483 inlägg Det skulle jag nog lösa i min applikation. Det verkar alldeles för komplext för en SQL-fråga.