TSQL——在SSMS中一行上显示两个查询的结果

TSQL——在SSMS中一行上显示两个查询的结果,tsql,ssms,resultset,display,recordset,Tsql,Ssms,Resultset,Display,Recordset,我使用的是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指令有望保证每个查询的结果数相同,这将有助于将它们显示在一起。如果这可以推广到每个查询的前10个,这也会有所帮

我使用的是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指令有望保证每个查询的结果数相同,这将有助于将它们显示在一起。如果这可以推广到每个查询的前10个,这也会有所帮助)

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

        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

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

        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

目前公认的答案有两个问题: 一) “表B As”行前缺少逗号 二) 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)

目前公认的答案有两个问题: 一) “表B As”行前缺少逗号 二) 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)

您是否搜索了
[tsql]连接
?使用子查询而不是
union
,可以在一行中获取结果。是否搜索了
[tsql]concatenate
?使用子查询,而不是
union
,可以在一行中获得结果。感谢您突出显示问题,我已更正,但保留您的答案。您也应该投票。感谢您突出显示问题,我已更正,但保留您的答案。您也应该投票。