Kom*_*gem 3 sql t-sql sql-server
Report_Gap Report_Group Name Percentage_Difference
1 Year ABC Operating 3.9
1 Year ABC Other 6.8
1 Year DEF Other 5.7
1 Year DEF Operating 1.2
1 Year GHI Operating 6.5
1 Year GHI Other -2.0
5 Year ABC Operating 13.6
5 Year ABC Other 5.4
5 Year DEF Other 5.5
5 Year DEF Operating 15.4
5 Year GHI Operating 19.5
5 Year GHI Other -7.9
Run Code Online (Sandbox Code Playgroud)
使用Transact-SQL,上述格式的数据是否可以表示如下?
Report_Gap Report_Group Operating Other
1 Year ABC 3.9 6.8
1 Year DEF 1.2 5.7
1 Year GHI 6.5 -2.0
5 Year ABC 13.6 5.4
5 Year DEF 15.4 5.5
5 Year GHI 19.5 -7.9
Run Code Online (Sandbox Code Playgroud)
我已经构建了数据,以便您不必这样做.
with MyData
as
(
select '1 Year' as Report_Gap,
'ABC' as Report_Group,
'Operating' as Name,
3.9 as Percentage_Difference
union all
select '1 Year' as Report_Gap,
'ABC' as Report_Group,
'Other' as Name,
6.8 as Percentage_Difference
union all
select '1 Year' as Report_Gap,
'DEF' as Report_Group,
'Other' as Name,
5.7 as Percentage_Difference
union all
select '1 Year' as Report_Gap,
'DEF' as Report_Group,
'Operating' as Name,
1.2 as Percentage_Difference
union all
select '1 Year' as Report_Gap,
'GHI' as Report_Group,
'Operating' as Name,
6.5 as Percentage_Difference
union all
select '1 Year' as Report_Gap,
'GHI' as Report_Group,
'Other' as Name,
-2.0 as Percentage_Difference
union all
select '5 Year' as Report_Gap,
'ABC' as Report_Group,
'Operating' as Name,
13.6 as Percentage_Difference
union all
select '5 Year' as Report_Gap,
'ABC' as Report_Group,
'Other' as Name,
5.4 as Percentage_Difference
union all
select '5 Year' as Report_Gap,
'DEF' as Report_Group,
'Other' as Name,
5.5 as Percentage_Difference
union all
select '5 Year' as Report_Gap,
'DEF' as Report_Group,
'Operating' as Name,
15.4 as Percentage_Difference
union all
select '5 Year' as Report_Gap,
'GHI' as Report_Group,
'Operating' as Name,
19.5 as Percentage_Difference
union all
select '5 Year' as Report_Gap,
'GHI' as Report_Group,
'Other' as Name,
-7.9 as Percentage_Difference
)
select * from MyData
go
Run Code Online (Sandbox Code Playgroud)
你想要条件aggergation:
SELECT Report_Gap, Report_Group,
MAX(CASE WHEN Name = 'Operating' THEN Percentage_Difference END) AS Operating,
MAX(CASE WHEN Name = 'Other' THEN Percentage_Difference END) AS Other
FROM table t
GROUP BY Report_Gap, Report_Group;
Run Code Online (Sandbox Code Playgroud)
如果Report_Group有一个或多个,Percentage_Difference那么你可能需要SUM()而不是MAX().