webForumDet fria alternativet

Summera och gruppera

9 svar · 842 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

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?

resultat.jpg
Peter SMedlem sedan dec. 20025 483 inlägg
#2
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
#3

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
#4

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
#5
sum(case when tidtyp in ('A','B','C') then tblTime.[Time] else 0 end) as abc
devotionMedlem sedan jan. 20013 582 inlägg
#6

LarsG skrev:

sum(case when tidtyp in ('A','B','C') then tblTime.[Time] else 0 end) as abc

Thanx! :)

devotionMedlem sedan jan. 20013 582 inlägg
#7

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

sql.PNG
devotionMedlem sedan jan. 20013 582 inlägg
#8

Ja, kan man det? :)

Mvh
Henrik

Peter SMedlem sedan dec. 20025 483 inlägg
#9

Det skulle jag nog lösa i min applikation. Det verkar alldeles för komplext för en SQL-fråga.

devotionMedlem sedan jan. 20013 582 inlägg
#10

Oki!

:)

Då släpper vi det!

Mvh
Henrik

138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)