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

时间:2014-01-30 10:26:10

标签: sql sql-server tsql sql-server-2012

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

例如select 1,2,3table显示one columnthree rows

这样的事情:select values(1),(2),(3)

* 一个选择语句

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)

<强>输出:

value
-----------
1
2
3

其他信息:

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

答案 2 :(得分:1)

因为看起来有一个我一直在寻找的简单代码:
select n from (values (1),(2),(3)) D(c);