SQL:返回多个列的子查询的分组别名

时间:2019-11-22 09:59:47

标签: sql sql-server subquery alias

我有一个包含子查询的sql查询,我希望从中返回两列。 目前看起来像这样:

SELECT A,
       B,
       CASE
         WHEN B IS NULL THEN NULL
         ELSE (
           SELECT first_column
           FROM   TABLE
           WHERE  TABLE.id = A.id
         )
       END AS TABLE_first_column,
       CASE
         WHEN B IS NULL THEN NULL
         ELSE (
           SELECT second_column
           FROM   TABLE
           WHERE  TABLE.id = A.id
         )
       END AS TABLE_second_column
FROM   OTHER_TABLE
...

子查询上方是相同的,除了它们不返回同一列。 我想知道是否有可能只有一个子查询返回2列,并为每个相应的列都有一个别名,就像这样:

SELECT A,
       B,
       CASE
         WHEN B IS NULL THEN NULL
         ELSE (
           SELECT first_column,
                  second_column
           FROM   TABLE
           WHERE  TABLE.id = A.id
         )
       END AS (TABLE_first_column, TABLE_second_column)
FROM   OTHER_TABLE
...

是否可以通过某种方式做到这一点?

1 个答案:

答案 0 :(得分:0)

如果您的TABLEOTHER_TABLE表通过id关联,则可以执行以下操作:

SELECT 
  A,
  B,
  CASE
    WHEN B IS NULL THEN NULL
    ELSE t1.first_column
  END AS TABLE_first_column,
  CASE
    WHEN B IS NULL THEN NULL
    ELSE t1.second_column
  END AS TABLE_second_column
FROM OTHER_TABLE t
LEFT JOIN "TABLE" t1 ON t.id = t1.id
相关问题