行类型为列,其中相邻值为行

时间:2017-08-28 15:28:05

标签: sql sql-server tsql

我有一个很长的查询,我将总结如下:

SELECT Name, Type, Rev
From Table

它返回类似:

Name    Type    Checked
Bob     Grp1    Frank
Bob     Grp2    Frank
Bob     Grp3    Frank
Lisa    Grp1    Sarah
Lisa    Grp3    Sarah

现在,由于我最多有3种类型,我希望它们是自己的列,并看到第3列中的值显示在每种类型下:

例如:

Name   Grp1    Grp2    Grp3 
Bob    Frank   Frank   Frank
Lisa   Sarah   NULL    Sarah

基本上我正在寻找有关如何执行此操作的查询。任何反馈都将不胜感激。

2 个答案:

答案 0 :(得分:2)

快速示例

Select *
 From  YourTable
 Pivot (max(Checked) for Type in ([Grp1],[Grp2],[Grp3])) P

编辑 - 如果您有多个显示的字段

Select *
 From  (
            SELECT Name, Type, Checked
            From Table
       ) A
 Pivot (max(Checked) for Type in ([Grp1],[Grp2],[Grp3])) P

答案 1 :(得分:1)

我通常使用CASE语句:

select Name,
case Type when 'Grp1' then checked else null end as 'Grp1',
case Type when 'Grp2' then checked else null end as 'Grp2',
case Type when 'Grp2' then checked else null end as 'Grp3'
from table