2017-05-17 41 views
1

我是SQL新手,我有一個典型的要求。Sql行到錶轉換查詢

例如,我在一個表下面的數據,

*-----------*-----*----*----*----*----*----*----*----*----* 
| date  | x1 | x2 | x3 | y1 | y2 | y3 | z1 | z2 | z3 | 
*-----------*-----*----*----*----*----*----*----*----*----* 
|2017-05-15 | 11 | 12 |15 | 21 | 31 | 41 | 0.1| 0.4| 0.5| 
*-----------*-----*----*----*----*----*----*----*----*----* 

現在我想編寫一個查詢導致如下:

date a1 b1 c1 
2017-05-17 11 21 0.1 
2017-05-17 12 31 0.4 
2017-05-17 15 41 0.5 

這可能嗎?如果是的話如何?

任何幫助都很好。

+0

所有值都存儲在一列或多列? – user75ponic

+0

多列,最終結果將在上面的例子中有4列和3行 –

+0

請用列更新問題。請具體說明需求,因爲其他人能夠輕鬆分析和提供解決方案。 – user75ponic

回答

0

如果列的格式爲每提及的話,我想這將解決您的問題:

declare @data table (date varchar(10),x1 int,x2 int,x3 int,y1 int,y2 int,y3 int,z1 numeric(5,2),z2 numeric(5,2),z3 numeric(5,2)) 

insert into @data values ('2017-05-15',11,12,15,21,31,41,0.1,0.4,0.5) 
select date,x1 as 'a1',y1 as 'b1', z1 as 'c1' from @data 
union all 
select date,x2 as 'a2',y2 as 'b2', z2 as 'c2' from @data 
union all 
select date,x3 as 'a3',y3 as 'b3', z3 as 'c3' from @data 

結果是:

|-----------|---|---|-----| 
|DATE  |a1 |b1 |c1 | 
|-----------|---|---|-----| 
|2017-05-15 |11 |21 |0.10 | 
|-----------|---|---|-----| 
|2017-05-15 |12 |31 |0.40 | 
|-----------|---|---|-----| 
|2017-05-15 |15 |41 |0.50 | 
|-----------|---|---|-----| 
+0

感謝@Ranjana Ghimire工會都將解決我的問題。非常感謝。 –