【问题标题】:SQL Server nested queries syntaxSQL Server 嵌套查询语法
【发布时间】:2020-07-22 00:27:11
【问题描述】:

我希望有人能解释为什么这个查询给我一个错误以及我该如何解决它。 这是语法:

With ID as ( 
select ID1 from.... where.... group by.....
), TYDATA as (

   with MG as (
   select IDMG, * from.... where.... group by.....
   ), TY as (
   select ID1, IDMG, * from.... where.... group by.....
   )
   SELECT TY.*, MG.* 
FROM TY LEFT JOIN MG ON TY.IDMG = MG.IDMG

)
SELECT ID.*, TYDATA.* 
FROM ID LEFT JOIN TYDATA.ID1 ON ID.ID1=TYDATA.ID1

错误是第二个附近的“语法不正确”。 如果我分别运行每个查询,我不会收到任何错误,所以我猜这个连接的语法是错误的。 您能否帮助我理解错误并为我提供解决此问题的替代方法

【问题讨论】:

    标签: sql-server join subquery


    【解决方案1】:

    CTE 的定义不能嵌套。之前定义的 CTE 可以在后续的 CTE 中使用,但应该在顶层定义。

    因此,结构应该是这样的:

    With ID as ( 
      select ID1 from.... where.... group by.....
    ),
    MG as (
      select IDMG, * from.... where.... group by.....
    ),
    TY as (
      select ID1, IDMG, * from.... where.... group by.....
    ),
    TYDATA as (
      SELECT TY.*, MG.* 
      FROM TY LEFT JOIN MG ON TY.IDMG = MG.IDMG
    )
    SELECT ID.*, TYDATA.* 
    FROM ID LEFT JOIN TYDATA.ID1 ON ID.ID1=TYDATA.ID1
    

    【讨论】:

    • 感谢 Roger,提供解决方案和解释。
    猜你喜欢
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多