如何在SQL Server中基于组将行重整为列

时间:2019-07-18 14:11:54

标签: sql sql-server

我的数据集包含组,主要数据库与次要数据库位于同一行,但第三个个体(在数据库中列为第二个或第三个中学数据)放在另一行。

我尝试使用自联接和分组方式

Primary  Secondary  
a        b         
a        c       
d        e          
f        NULL          

我希望它看起来像这样

Primary  Secondary    Third 
a        b            c                  
d        e            NULL         
f        NULL         Null

1 个答案:

答案 0 :(得分:0)

SQL表表示无序集。因此,您可以执行所需的操作,但无法控制哪些列获得哪些值-除非一列指定了顺序。

所以:

select primary, min(secondary) as secondary,
       (case when min(secondary) <> max(secondary) then max(secondary) end) as third
from t
group by primary;