将查询中的任意一行分解为多行



我有一个包含以下列的表: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 |

相关内容

  • 没有找到相关文章

最新更新