交叉应用程序在SQL Server 2005中不起作用



我有一个交叉应用代码,它在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);

在SQLServer2005版本中,values部分出现错误

错误:

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

不确定出了什么问题。

如果我没有弄错的话,表值构造函数是在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年结束。因此,现在是尝试升级的好时机:(

最新更新