我写了以下代码:
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
对于我的一生,我不明白为什么会引发错误?
第15层状态1,第2行,Msg 102
'a'附近的语法不正确。
答案 0 :(得分:3)
您可能只是缺少逗号:
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';
请注意,我还在日期常量周围加上了单引号。