TSQL - отображать результаты двух запросов в одной строке в SSMS - PullRequest
0 голосов
/ 08 ноября 2019

Я использую 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 на запрос , это также помогло бы)

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

В настоящее время есть две проблемы с принятым ответом: I) пропущенная запятая перед строкой: «Таблица B как» 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)
1 голос
/ 08 ноября 2019

Это должно работать для любого количества строк, предполагается, что вы хотите, чтобы пара была упорядочена по значениям в отображаемом столбце

        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
...