【问题标题】:SQL - Sharing fields between derived tablesSQL - 在派生表之间共享字段
【发布时间】:2017-05-19 02:09:46
【问题描述】:

是否可以跨派生表访问字段?

SELECT * 
FROM   (SELECT ID, COL1A FROM Table1) T1
       JOIN (SELECT ID, COL2A FROM Table2) T2
           ON T1.ID = T2.ID
       JOIN (SELECT ID, (COL3A + T2.COL2A) AS SUM FROM Table3) T3
           ON T1.ID = T3.ID

【问题讨论】:

  • 是的,上面的代码有错误吗?
  • 是的。或者您也可以使用公用表表达式 (CTE)。
  • 我不知道“是”cmets 来自哪里。 T2.COL2A 超出了 ANSI SQL 和我熟悉的每个数据库的范围。有更好的方法来编写查询,但那里不允许使用特定的表达式。

标签: sql derived-table


【解决方案1】:

您可以在 SELECT 子句中使用多个列来放置表达式:

SELECT t1.ID, t1.COL1A, t2.COL2A, (t3.COL3A + t2.COL2A) as sum
FROM Table1 T1 JOIN
     Table2 T2
     ON T1.ID = T2.ID JOIN
     Table3 T3
     ON T1.ID = T3.ID;

根本不需要派生表。

【讨论】:

    猜你喜欢
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多