执行 Common Table 表达式时出现语法错误

Get a syntax error when doing a Common Table Expression

我写了下面的代码:

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

我这辈子都搞不懂为什么会抛出错误?

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near 'a'.

您可能只是漏掉了一个逗号:

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;

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

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';

请注意,我还在日期常量两边加上了单引号。