有没有办法在select中返回多于一行而不使用现有表

Mic*_*vko 4 sql t-sql sql-server sql-server-2012

简单的问题,只是出于好奇.

例如select 1,2,3,将显示tableone columnthree rows.

像这样的东西: select values(1),(2),(3)

*有一个选择声明

Kah*_*ahn 5

我在帖子中发表评论的一个例子.

DECLARE @TABLE TABLE (ONE INT, TWO INT, THREE INT)

INSERT INTO @TABLE VALUES (1,2,3)

SELECT UP.COL, UP.VALUE
FROM @TABLE
UNPIVOT (VALUE FOR COL IN (ONE,TWO,THREE)) UP
Run Code Online (Sandbox Code Playgroud)


Dev*_*art 5

查询:

DECLARE @t TABLE (i1 INT, i2 INT, i3 INT)
INSERT INTO @t VALUES (1, 2, 3)

SELECT t.*
FROM @t
CROSS APPLY (
    VALUES(i1), (i2), (i3)
) t(value)
Run Code Online (Sandbox Code Playgroud)

输出:

value
-----------
1
2
3
Run Code Online (Sandbox Code Playgroud)

附加信息:

http://blog.devart.com/is-unpivot-the-best-way-for-converting-columns-into-rows.html