T-SQL将行分组到列中

时间:2013-12-05 15:35:33

标签: tsql unpivot

我有一套用于打印标签的地址,我想将它们分组。

What I have:
UID  CustName LocName  State  Zip    Comments1  Comments2
=========================================================
1      John     R1      NC   158631    Foo         Bar
2      Smith    R2      SC   126543    Bla         Bla Bla


What I'm looking for:
Col_1    Col_2   Col_3   
============================= 
John     R1      NC    
158631   Foo     Bar
Smith    R2      SC    
126543   Bla     Bla Bla          

我希望这是有道理的。

1 个答案:

答案 0 :(得分:2)

您需要取消每组3中的数据列。如果您使用的是SQL Server 2005+,则可以使用CROSS APPLY来获取结果:

select col_1, col_2, col3
from yourtable
cross apply
(
    select custname, locname, state union all
    select zip, comments1, comments2
) c (col_1, col_2, col3)
order by uid;

注意,您放在一起的列上的数据类型必须相同,例如zipint,那么您必须将其转换为varchar所以您可以将数据放在与custname相同的列中。