【问题标题】:Cross apply not working in SQL Server 2005交叉应用在 SQL Server 2005 中不起作用
【发布时间】:2019-04-04 23:30:44
【问题描述】:

我有一个在 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 部分出现错误

错误:

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

不知道出了什么问题。

【问题讨论】:

    标签: sql sql-server sql-server-2008 sql-server-2005


    【解决方案1】:

    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. 所以,现在是尝试升级的好时机:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多