我有一个交叉应用代码,它在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年结束。因此,现在是尝试升级的好时机:(