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

Sql 将多行数据合并为一行多列,sql,tsql,Sql,Tsql,这已经不是我第一次面对这样的问题了,我还没有弄明白 我正试图提取一名员工的记录,找出他们属于哪一种族。当前返回数据的方式如下: Emp # | Race ------------- 1111 | White 1111 | Asian 我希望它最终看起来像这样: Emp # | White | Black | Hispanic | Asian | Indian | Other ---------------------------------------------------------

这已经不是我第一次面对这样的问题了,我还没有弄明白

我正试图提取一名员工的记录,找出他们属于哪一种族。当前返回数据的方式如下:

Emp # | Race
-------------
1111  | White
1111  | Asian
我希望它最终看起来像这样:

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

我曾尝试通过CTE和PIVOT函数来实现这一点,但我可能对如何使用PIVOT没有太多的了解。

像这样构建动态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

天哪,太简单了。我搜索了很长一段时间,甚至阅读了所有推荐的可能的副本,但仍然没有找到。非常感谢。为什么是双重情况?我会选择MAX(当种族=白色,然后是Y,else,N,end)Giorgos Betsos——我知道这是静态的。我的意思是,作者应该构建动态查询,生成这样的查询。他可以在纯sql或客户机应用程序中生成它。John Cappelletti-在本例中,它可以工作,但是如果您决定使用不同的值而不是Y和N,则可能会出现一些问题。