将多行数据合并为一行,多列

时间:2017-04-06 13:37:42

标签: sql tsql

这不是我第一次遇到这类问题而且我还没有弄明白。

我正在试图提取员工的记录,并找出他们所在的比赛。当前返回数据的方式如下:

Emp # | Race
-------------
1111  | White
1111  | Asian

我希望它最终看起来像这样:

Emp # | White | Black | Hispanic | Asian | Indian | Other
---------------------------------------------------------
1111  |   Y   |   N   |    N     |   Y   |   N    |   N

我是通过CTE和PIVOT功能尝试过的,但我可能对PIVOT的使用方式没有太大的了解。

1 个答案:

答案 0 :(得分:0)

像这样构建动态SQL

select Emp, 
   case when MAX(case when Race = 'White' then 1 else 0 end) = 1 then 'Y' else 'N' as White,
   case when MAX(case when Race = 'Asian' then 1 else 0 end) = 1 then 'Y' else 'N' as Asian,
   case when MAX(case when Race = 'Black ' then 1 else 0 end) = 1 then 'Y' else 'N' as Black
from [YourTable]
group by Emp