2016-09-19 26 views
0

我在这里读过很多不同的问题,虽然它看起来像人们有时会做的事,但我没有找到这个问题。 我已经是一个表看起来像这样:如何获取重复行并添加为SQL中的列?

Person_id Person_Phone_Number 
a   11545623 
b   21323545 
c   45654655 
d   54455896 
e   21458437 
f   14564680 
a   32545542 
c   98745682 
e   10589621 
g   23568954 
a   56468756 

而我需要的输出是这样的:

Person_id Person_Phone_Number New_Column_1 New_Column_2 
a   11545623    32545542  56468756 
b   21323545 
c   45654655    98745682 
d   54455896 
e   21458437    10589621 
f   14564680 
g   23568954 
+4

这将是一个数据透视查询,确切的米使用的机制/语法取决于你使用的数据库。 –

+0

添加到@ MarcB的评论 - 在显示图层(报表,网页,表单等)中执行此操作比在喜欢固定列的数据层更容易。 –

回答

0

如果SQL Server

;with cteBase as (
     Select *,RowNr = Row_Number() over (Partition By Person_id Order By Person_Phone_Number) 
     From @YourTable 
) 
Select Person_ID 
     ,Person_Phone_Number = max(case when RowNr=1 then Person_Phone_Number else '' end)  
     ,New_Column_1  = max(case when RowNr=2 then Person_Phone_Number else '' end)  
     ,New_Column_2  = max(case when RowNr=3 then Person_Phone_Number else '' end)  
From cteBase 
Group By Person_ID 
Order By 1 

返回

Person_ID Person_Phone_Number New_Column_1 New_Column_2 
a   11545623    32545542  56468756 
b   21323545   
c   45654655    98745682 
d   54455896   
e   10589621    21458437 
f   14564680   
g   23568954   
+0

@a_horse_with_no_name你100%正确。更新。 –

相关问题