【问题标题】:TSQL -- display results of two queries on one row in SSMSTSQL -- 在 SSMS 中的一行上显示两个查询的结果
【发布时间】:2019-11-13 21:25:18
【问题描述】:

我使用的是 TSQL,SSMS v.17.9.1 底层数据库是 Microsoft SQL Server 2014 SP3

出于显示目的,我想连接两个查询的结果:

SELECT TOP 1 colA as 'myCol1' FROM tableA
--
SELECT TOP 1 colB  as 'myCol2' FROM tableB

并在 SSMS 中的一行中显示查询结果。 (TOP 1 指令有望保证每个查询的结果数量相同,这将有助于将它们一起显示。如果这可以推广到 每个查询 TOP 10,那也会有所帮助)

【问题讨论】:

  • 你搜索过[tsql] concatenate吗?使用子查询而不是 union,可以让您在一行中获得结果。

标签: tsql ssms resultset display recordset


【解决方案1】:

这应该适用于任意数量的行,它假设您希望按显示列中的值排序

        With 
        TableA_CTE AS
        (
        SELECT TOP 1 colA as myCol1
        ,Row_Number() OVER (ORDER BY ColA DESC)  AS RowOrder 
        FROM tableA
        ),
        TableB_CTE AS
        (
        SELECT TOP 1 colB as myCol2
        ,Row_Number() OVER (ORDER BY ColB DESC)  AS RowOrder 
        FROM tableB
        )
        SELECT A.myCol1, B.MyCol2
        FROM TableA_CTE AS A
        INNER JOIN TableB_CTE AS B
           ON A.RowOrder = B.RowOrder

【讨论】:

  • 感谢您强调问题,我已更正,但请保留您的答案,您也值得投票。
【解决方案2】:

目前接受的答案有两个问题: I) 行前缺少逗号:“Table B As” II) TSQL 似乎发现它是递归的,所以我以非递归的方式重写了它:

这是对在 T-SQL 中实际有效的已接受答案的重新设计:

USE [Database_1];

 With 
   CTE_A AS
    (
    SELECT TOP 1 [Col1] as myCol1 
    ,Row_Number() OVER (ORDER BY [Col2] desc)  AS RowOrder 
    FROM [TableA]
    )
    ,
    CTE_B AS
    (
    SELECT TOP 1 [Col2] as myCol2
    ,Row_Number() OVER (ORDER BY [Col2] desc)  AS RowOrder 
    FROM  [TableB] 
    )
    SELECT A.myCol1, B.myCol2
    FROM CTE_A AS A
    INNER JOIN CTE_B  AS B
       ON ( A.RowOrder = B.RowOrder)

【讨论】:

    猜你喜欢
    • 2013-04-20
    • 2012-12-26
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    相关资源
    最近更新 更多