我想按ID分组,怎么办?
谢谢!
编辑: Example
SELECT
ID as 'Case Number'
,case when Group like '%1st%' then CAST(CAST(DATEDIFF(SECOND,'1970-01-01 00:00:00.000',duration) AS decimal)/28800 AS decimal (8,2)) end as '1st - Elapsed time (Business Days)'
,case when Group like '%2nd%' then CAST(CAST(DATEDIFF(SECOND,'1970-01-01 00:00:00.000',duration) AS decimal)/28800 AS decimal (8,2)) end as '2nd - Elapsed time (Business Days)'
,case when (Group not like '%1st%' and Group not like '%2nd%') then CAST(CAST(DATEDIFF(SECOND,'1970-01-01 00:00:00.000',duration) AS decimal)/28800 AS decimal (8,2)) end as '3rd - Elapsed time (Business Days)'
,cast(cast(datediff(second,'1970-01-01 00:00:00.000',xy_duration) as decimal)/28800 AS decimal (8,2)) as 'Processing Time (Business Days)'
,cast(cast(datediff(second,'1970-01-01 00:00:00.000',pause_duration) as decimal)/28800 AS decimal (8,2)) as 'Freeze Time (Business Days)'
FROM MainTable with (nolock)
WHERE active = 'false'
答案 0 :(得分:0)
您只需要包含SUM()
函数的条件聚合:
SELECT ID as 'Case Number'
,SUM(case when Group like '%1st%' then CAST(CAST(DATEDIFF(SECOND,'1970-01-01 00:00:00.000',duration) AS decimal)/28800 AS decimal (8,2)) end) as '1st - Elapsed time (Business Days)'
,SUM(case when Group like '%2nd%' then CAST(CAST(DATEDIFF(SECOND,'1970-01-01 00:00:00.000',duration) AS decimal)/28800 AS decimal (8,2)) end) as '2nd - Elapsed time (Business Days)'
,SUM(case when (Group not like '%1st%' and Group not like '%2nd%') then CAST(CAST(DATEDIFF(SECOND,'1970-01-01 00:00:00.000',duration) AS decimal)/28800 AS decimal (8,2)) end) as '3rd - Elapsed time (Business Days)'
,SUM(cast(cast(datediff(second,'1970-01-01 00:00:00.000',xy_duration) as decimal)/28800 AS decimal (8,2))) as 'Processing Time (Business Days)'
,SUM(cast(cast(datediff(second,'1970-01-01 00:00:00.000',pause_duration) as decimal)/28800 AS decimal (8,2))) as 'Freeze Time (Business Days)'
FROM MainTable with (nolock)
WHERE active = 'false'
GROUP BY ID