我是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 :(得分: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 |
|-----------|---|---|-----|