-3
我想從一個字段中提取3列數據。基本上我有一個字段爲了討論與下列數據的表:T-SQL從單個列字段中提取多列數據
- 顏色,
- 型號,
- 汽車的新年。
據逐項爲ID4
是顏色,ID5
是型號和ID6
是新年。使用過濾器,我可以毫無問題地拖出一個數據集,例如。過濾器= 4,5或6.但我不能拉倍數,因爲我只是得到標題,根本沒有數據。
我想從一個字段中提取3列數據。基本上我有一個字段爲了討論與下列數據的表:T-SQL從單個列字段中提取多列數據
據逐項爲ID4
是顏色,ID5
是型號和ID6
是新年。使用過濾器,我可以毫無問題地拖出一個數據集,例如。過濾器= 4,5或6.但我不能拉倍數,因爲我只是得到標題,根本沒有數據。
假設你正在使用SQL Server 2005 +,和你的問題確實是「你怎麼會在一個表中破一列到基於同一表中的另一場多個命名列」,這裏是你的圖形化後一個簡單的例子題。
給這個數據集:
declare @tbl table (id int, tag char(3), data varchar(255))
insert into @tbl values
(1, 'ID4', 'Red'), (1, 'ID5', 'Toyota'), (1, 'ID6', '1999'),
(2, 'ID4', 'Blue'), (2, 'ID5', 'Honda'), (2, 'ID6', '2000'),
(3, 'ID4', 'Green'), (3, 'ID5', 'Nissan'), (3, 'ID6', '2004'),
(4, 'ID4', 'Red'), (4, 'ID5', 'Nissan'), (4, 'ID6', '1990'),
(5, 'ID4', 'Black'), (5, 'ID5', 'Toyota'), (5, 'ID6', '2002')
簡單select
語句返回此數據:
select * from @tbl
id tag data
1 ID4 Red
1 ID5 Toyota
1 ID6 1999
2 ID4 Blue
2 ID5 Honda
2 ID6 2000
3 ID4 Green
3 ID5 Nissan
3 ID6 2004
4 ID4 Red
4 ID5 Nissan
4 ID6 1990
5 ID4 Black
5 ID5 Toyota
5 ID6 2002
這pivot
查詢返回的數據 - 每車一排 - 用顏色,型號和年份作爲自己的列:
select id, [ID4] as 'Color', [ID5] as 'Model', [ID6] as 'Year'
from (select id, tag, data from @tbl) as p
pivot (max(data) for tag in ([ID4], [ID5], [ID6])) as pvt
order by pvt.id
這是怎麼輸出廁所ks:
id Color Model Year
1 Red Toyota 1999
2 Blue Honda 2000
3 Green Nissan 2004
4 Red Nissan 1990
5 Black Toyota 2002
請將您的問題重新說明給我,但它沒有任何意義。添加樣本數據以及預期的輸出。 – JonH