Получить синтаксическую ошибку при выполнении общего табличного выражения - PullRequest
0 голосов
/ 31 октября 2018

Я написал следующий код:

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

Для жизни я не могу понять, почему он выдает ошибку?

Сообщение 102, Уровень 15, Состояние 1, Строка 2
Неверный синтаксис рядом с 'a'.

1 Ответ

0 голосов
/ 31 октября 2018

Вы можете просто пропустить запятую:

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

Обратите внимание, что я также поместил одинарные кавычки вокруг константы даты.

...