【问题标题】:Is there a way to return more than 1 row in select without using existing tables有没有办法在不使用现有表的情况下在选择中返回超过 1 行
【发布时间】:2014-01-30 10:26:09
【问题描述】:

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

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

类似这样的:select values(1),(2),(3)

*只有一个选择语句

【问题讨论】:

  • 或者您可以使用 unpivot,但您仍然需要从实际数据中进行选择,因为生成一个虚构的子集需要两次选择,您可以在下面发表评论。无论如何,这里有什么意义?
  • 这一点例如我们可以交叉连接一组值,它将与交叉连接表相同,一列多行,所以有趣的是(看起来)没有看起来像这样的简单索引 select values(1), (2), (3) 正如我出于好奇所说的那样。

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


【解决方案1】:

我在您的帖子中的评论示例。

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

【讨论】:

    【解决方案2】:

    查询:

    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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-27
        • 1970-01-01
        • 2019-07-07
        • 2011-05-27
        • 1970-01-01
        • 2016-01-10
        • 2016-01-19
        相关资源
        最近更新 更多