交叉应用在 SQL Server 2005 中不起作用
Cross apply not working in SQL Server 2005
我有一个交叉应用代码,它在 SQL 服务器版本 2008 中运行良好,但不幸的是,相同的代码在 SQL 服务器版本 2005 中不起作用。下面是代码:
SELECT YT.ID,
YT.Product
V.C AS Flag
FROM YourTable YT
CROSS APPLY (VALUES('A'),('B'),('C')) V(C);
在 SQLServer 2005 版本中 values
部分出现错误
错误:
Msg 156, Level 15, State 1, Procedure SP_xxx, Line 69
Incorrect syntax near the keyword 'Values'.
不确定哪里出了问题。
Table value constructors如果我没记错的话是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 support ended in 2016. 所以,现在是尝试升级的好时机:)
我有一个交叉应用代码,它在 SQL 服务器版本 2008 中运行良好,但不幸的是,相同的代码在 SQL 服务器版本 2005 中不起作用。下面是代码:
SELECT YT.ID,
YT.Product
V.C AS Flag
FROM YourTable YT
CROSS APPLY (VALUES('A'),('B'),('C')) V(C);
在 SQLServer 2005 版本中 values
部分出现错误
错误:
Msg 156, Level 15, State 1, Procedure SP_xxx, Line 69
Incorrect syntax near the keyword 'Values'.
不确定哪里出了问题。
Table value constructors如果我没记错的话是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 support ended in 2016. 所以,现在是尝试升级的好时机:)