代码之家  ›  专栏  ›  技术社区  ›  bernando_vialli

执行公共表表达式时出现语法错误

  •  0
  • bernando_vialli  · 技术社区  · 6 年前

    WITH b AS 
    (
        SELECT * 
        FROM [Core].[dbo].[SalesAccount] 
        WHERE [SalesAccount].[RecordUpdateDate] > 2014-07-15
    ) 
    a AS
    (
        SELECT * 
        FROM [Core].[dbo].[SalesActivity]
    ) 
    SELECT * 
    FROM a 
    INNER JOIN b ON a.SalesAccountSFID = b.SalesAccountSFID
    

    我得到这个基本上是为了修改这里的查询: https://towardsdatascience.com/how-to-ace-data-science-interviews-sql-b71de212e433

    对于我的生活,我不明白为什么它会抛出一个错误?


    “a”附近的语法不正确。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Gordon Linoff    6 年前

    您可能只是缺少一个逗号:

    with b as (
          SELECT *
          FROM [Core].[dbo].[SalesAccount]
          WHERE [SalesAccount].[RecordUpdateDate] > '2014-07-15'
         ),
         a as (
          SELECT *
          FROM [Core].[dbo].[SalesActivity]
         ) 
    SELECT *
    FROM a INNER JOIN
         b
         on a.SalesAccountSFID = b.SalesAccountSFID;
    

    没有理由为此使用CTEs。我发现这更简单:

    SELECT sa.*, sact.*
    FROM [Core].[dbo].[SalesAccount] sa INNER JOIN
         [Core].[dbo].[SalesActivity] sact
         on sa.SalesAccountSFID = sact.SalesAccountSFID
    WHERE a.RecordUpdateDate > '2014-07-15';