Неверный синтаксис рядом с ключевым словом «с». Предлагаемое решение не очень хорошо - PullRequest
0 голосов
/ 24 июня 2019

Я получаю следующую ошибку:

Неверный синтаксис рядом с ключевым словом «с». Если этот оператор является общим табличным выражением, предложением xmlnamespaces или предложением контекста отслеживания изменений, предыдущий оператор должен заканчиваться точкой с запятой.

с этим SQL:

SELECT DISTINCT 
    Name, t1.[value] AS DateTime
FROM 
    BmaCare.Questionnaire qu
LEFT JOIN 
    BmaCare.Pregnancy pr ON qu.PregnancyId = pr.Id
CROSS APPLY 
    OPENJSON(qu.Data, '$.actions')
        WITH (
             entries NVARCHAR(MAX) '$.entries' AS JSON) j
CROSS APPLY 
    OPENJSON(j.entries)
        WITH (
              [key] NVARCHAR(100) '$.key',
              [value] NVARCHAR(100) '$.value') t1
WHERE
    t1.[key] = 'Admission.DateTime' OR t1.[key] = 'Discharge.DateTime' 
    AND t1.[value] IS NOT NULL
    AND pr.Uuid = '50E8835B-4ECE-4333-9B5B-DD6AF611989C'
ORDER BY 
    DateTime DESC

Решение для этого было дано здесь: Неверный синтаксис рядом с ключевым словом «с». Если этот оператор является общим табличным выражением , то есть перед каждой точкой с точкой с запятой. Очень просто. Когда я делаю это в моей строке SQL, я получаю

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

Что мне сделать, чтобы запрос работал?

1 Ответ

0 голосов
/ 24 июня 2019

Для использования OPENJSON ваша база данных должна иметь уровень совместимости 130 (SQL Server 2016) или выше. В противном случае вы получите синтаксическую ошибку, указывающую на неправильный оператор WITH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...