2017-02-07 23 views
1

如何將數據分成不同的列sql?

+--------------------------+ 
|  inv_num  scn | 
+--------------------------+ 
|  MI1001  160008 | 
|  CI1002  160008 | 
|  VI1003  160008 | 
+--------------------------+ 

MI爲雜項,CI爲貨物,VI爲船隻。

我需要在SQL結果顯示像

+------------------------------------------------+ 
|  scn   Misc  Cargo  Vessel | 
+------------------------------------------------+ 
|  160008  MI1001  CI1002  VI1003 | 
+------------------------------------------------+ 

我是新來這種事情,所以不知道該怎麼辦查詢。

+2

可能的重複[將行轉換爲使用SQL Server中的'透視'列)(http://stackoverflow.com/questions/15931607/convert-rows-to-columns-using-pivot-in-sql-server) – GurV

回答

4

我會和有條件的聚集做到這一點:使用數據透視

select scn, 
     max(case when inv_num like 'MI%' then inv_num end) as Misc, 
     max(case when inv_num like 'CI%' then inv_num end) as Cargo, 
     max(case when inv_num like 'VI%' then inv_num end) as Vessel 
from t 
group by scn; 
0

我們也可以實現

樣本數據

Declare @Table1 TABLE 
    (inv_num varchar(6), scn int) 
; 

INSERT INTO @Table1 
    (inv_num, scn) 
VALUES 
    ('MI1001', 160008), 
    ('CI1002', 160008), 
    ('VI1003', 160008) 
; 

腳本

Select scn,[1] AS Misc,[2] As Cargo,[3] As Vessel from (
select 
inv_num, 
scn, 
ROW_NUMBER()OVER(PARTITION BY scn ORDER BY (SELECT NULL))RN 
     from @Table1)T 
PIVOT (MAX(inv_num) FOR RN IN ([1],[2],[3]))PVT 
相關問題