如何在 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