我有一个包含以下列的表:a、b1、b2、b3
我想从这个表中得到这样的查询:
_______________
| col1 | col2 |
|-------------|
| a | b1 |
| a | b2 |
| a | b3 |
|_____________|
在SELECT命令上是否可行?
执行UNION ALL
是一种方法,但您也可以使用UNPIVOT
查询,请参阅下面的
无论如何,我认为UNPIVOT将比多次联合更有效。
SQL Fiddle
MS SQL Server 2008架构设置:
查询1:
DECLARE @TABLE TABLE(col1 VARCHAR(5), col2 VARCHAR(5)
, Col3 VARCHAR(5), Col4 VARCHAR(5))
INSERT INTO @TABLE VALUES
( 'a' , 'B1', 'B2', 'B3'),
( 'd' , 'E1', 'E2', 'E3')
SELECT col1
,Vals AS Col2
FROM @TABLE t
UNPIVOT (Vals FOR N IN (col2,col3,col4) ) up
结果:
| COL1 | COL2 |
|------|------|
| a | B1 |
| a | B2 |
| a | B3 |
| d | E1 |
| d | E2 |
| d | E3 |