Перекрестное применение не работает в SQL Server 2005 - PullRequest
0 голосов
/ 31 октября 2018

У меня есть перекрестный код, который отлично работает в SQL Server версии 2008, но, к сожалению, тот же код не работает в SQL Server версии 2005. Ниже приведен код:

SELECT YT.ID,
       YT.Product
       V.C AS Flag
FROM YourTable YT
     CROSS APPLY (VALUES('A'),('B'),('C')) V(C);

В версии SQLServer 2005 получено сообщение об ошибке values part

Ошибка:

Msg 156, Level 15, State 1, Procedure SP_xxx, Line 69
Incorrect syntax near the keyword 'Values'.

Не уверен, что пошло не так.

1 Ответ

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

Конструкторы табличных значений были введены в 2008 году, если я не ошибаюсь

Вот метод с UNION

select *
from (select 1 as a) a
cross apply (select 'A' as X union select 'B' union select 'C') x

или CTE

with cte as(
select 'A' as X union select 'B' union select 'C')

select *
from (select 1 as a) a
cross apply cte 

И все же, Поддержка SQL Server 2005 закончилась в 2016 году. Итак, сейчас самое время попробовать и обновить:)

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