如何在 SQL 服务器中将行切换为列,将列切换为行?
How to Switch rows into columns and columns into rows in SQL Server?
嗨,我有一个 table 如下所示,
Stat Points TeamA TeamB Date
Highest Total 248 5 387 2016-05-14
Lowest Total 153 2 5 2016-05-11
Highest Successful Chase 195 5 386 2016-05-07
Lowest Score Defended 211 5 4 2016-05-18
我想要这样的结果,
Highest Total Lowest Total Highest Chase Low Defended
A 248 153 195 211
B 5 2 5 5
C 384 5 386 4
D 2016-05-14 2016-05-11 2016-05-07 2016-05-18
帮我看看结果,我是sql服务器的新人。
旋转和逆旋转,不管这个 'A'、'B'、.. 真的是什么意思。
它还显示了将不同的类型转换为常见的 varchar(20)
。根据您的要求,您可能需要不同的铸件。
select rowType,
max(case ut.stat when 'Highest Total' then value end) as [Highest Total],
max(case ut.stat when 'Lowest Total' then value end) as [Lowest Total],
max(case ut.stat when 'Highest Chase' then value end) as [Highest Chase],
max(case ut.stat when 'Lowest Score Defended' then value end) as [Lowest Defended]
from t
cross apply (
select *
from (
values
('A', cast(points as varchar(20)), stat),
('B', cast(TeamA as varchar(20)), stat),
('C', cast(TeamB as varchar(20)), stat),
('D', cast(Date as varchar(20)), stat)
) ut(rowType, value, stat) )ut
group by rowType
嗨,我有一个 table 如下所示,
Stat Points TeamA TeamB Date
Highest Total 248 5 387 2016-05-14
Lowest Total 153 2 5 2016-05-11
Highest Successful Chase 195 5 386 2016-05-07
Lowest Score Defended 211 5 4 2016-05-18
我想要这样的结果,
Highest Total Lowest Total Highest Chase Low Defended
A 248 153 195 211
B 5 2 5 5
C 384 5 386 4
D 2016-05-14 2016-05-11 2016-05-07 2016-05-18
帮我看看结果,我是sql服务器的新人。
旋转和逆旋转,不管这个 'A'、'B'、.. 真的是什么意思。
它还显示了将不同的类型转换为常见的 varchar(20)
。根据您的要求,您可能需要不同的铸件。
select rowType,
max(case ut.stat when 'Highest Total' then value end) as [Highest Total],
max(case ut.stat when 'Lowest Total' then value end) as [Lowest Total],
max(case ut.stat when 'Highest Chase' then value end) as [Highest Chase],
max(case ut.stat when 'Lowest Score Defended' then value end) as [Lowest Defended]
from t
cross apply (
select *
from (
values
('A', cast(points as varchar(20)), stat),
('B', cast(TeamA as varchar(20)), stat),
('C', cast(TeamB as varchar(20)), stat),
('D', cast(Date as varchar(20)), stat)
) ut(rowType, value, stat) )ut
group by rowType