Author |
Topic |
infodemers
Posting Yak Master
183 Posts |
Posted - 2012-05-23 : 03:28:22
|
Hi,I am trying to get the sum for some columns(Data1,Data2,Data3) for every hour for a number of days. OfficeA and OfficeZ is my unique key. Based on the key, I want to get the sum of columns(Data1,Data2,Data3)for all Hour between 8h00 to 23h00I use this with no success.SELECTOfficeA ,OfficeZ,Heure,case when CAST(Data1 AS Int) < 0 then -1 else Sum(CAST(Data1 AS Int)) End AS Data1,case when CAST(Data2 AS Int) < 0 then -1 else Sum(CAST(Data2 AS Int)) End AS Data2,case when CAST(Data2 AS Int) < 0 then 0 else Sum(CAST(Data2 AS Int)) end AS Data2FROM tbl_Data GROUP BYOfficeA ,OfficeZ,Heure,case when CAST(Data1 AS Int) < 0 then -1 else Sum(CAST(Data1 AS Int)) End AS Data1,case when CAST(Data2 AS Int) < 0 then -1 else Sum(CAST(Data2 AS Int)) End AS Data2,case when CAST(Data2 AS Int) < 0 then 0 else Sum(CAST(Data2 AS Int)) end AS Data2count([Day]) as [Number of Days] Before|OfficeA|OfficeZ|Day |Hour |Data1|Data2|Data3||091 |045 |Mon |08:00|24 |15 |18 ||091 |045 |Tues|09:00|36 |12 |17 ||091 |045 |Wed |10:00|24 |15 |18 ||091 |045 |Thur|08:00|24 |15 |18 ||091 |045 |Fri |08:00|24 |15 |18 ||091 |045 |Mon |08:00|24 |15 |18 ||091 |045 |Tues|08:00|24 |15 |18 ||091 |045 |Wed |08:00|24 |15 |18 ||091 |045 |Thur|08:00|24 |15 |18 |Results I Wish to get for every hour between 08:00 and 23:00 for every combination of OfficeA and Office Z|OfficeA|OfficeZ|Hour |Data1|Data2|Data3|Number of days||091 |045 |08:00|228 |132 |161 |9 ||091 |045 |09:00|214 |134 |141 |9 ||091 |045 |10:00|224 |124 |121 |9 |Thanks! |
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2012-05-23 : 10:30:22
|
[code]DECLARE @Sample TABLE ( OfficeA CHAR(3) NOT NULL, OfficeZ CHAR(3) NOT NULL, [Day] VARCHAR(4) NOT NULL, [Hour] TIME(0) NOT NULL, Data1 INT NOT NULL, Data2 INT NOT NULL, Data3 INT NOT NULL )INSERT @SampleVALUES ('091', '045', 'Mon' , '08:00', 24, 15, 18), ('091', '045', 'Tues', '09:00', 36, 12, 17), ('091', '045', 'Wed' , '10:00', 24, 15, 18), ('091', '045', 'Thur', '08:00', 24, 15, 18), ('091', '045', 'Fri' , '08:00', 24, 15, 18), ('091', '045', 'Mon' , '08:00', 24, 15, 18), ('091', '045', 'Tues', '08:00', 24, 15, 18), ('091', '045', 'Wed' , '08:00', 24, 15, 18), ('091', '045', 'Thur', '07:00', 24, 15, 18);-- SwePesoSELECT OfficeA, OfficeZ, [Hour], SUM(CASE WHEN Data1 < 0 THEN -1 ELSE Data1 END) AS Data1, SUM(CASE WHEN Data2 < 0 THEN -1 ELSE Data2 END) AS Data2, SUM(CASE WHEN Data3 < 0 THEN -1 ELSE Data3 END) AS Data3, COUNT(*) AS DaysFROM @SampleWHERE [Hour] BETWEEN '08:00' AND '23:00'GROUP BY OfficeA, OfficeZ, [Hour][/code] N 56°04'39.26"E 12°55'05.63" |
 |
|
|
|
|