【问题标题】:How to write an SQL Select for XML including Union logic?如何为包括联合逻辑的 XML 编写 SQL 选择?
【发布时间】:2019-06-22 21:07:46
【问题描述】:

我有以下语句将两个日期都输入@xmlData

declare @xmlData OUTOUT

SET @xmlData = (SELECT @FileDate AS [FileDate] UNION SELECT @satDate AS [FileDate] FOR XML RAW, ELEMENTS)

然后我将它插入到表格中:

DECLARE @ListOfDates TABLE (FileDate varchar(50))

        INSERT @ListOfDates (FileDate)
        SELECT Tbl.Col.value('FileDate[1]', 'varchar(50)') 
        FROM @xmlData.nodes('//row') Tbl(Col)  

在执行我的select 逻辑时,我收到一条错误消息:

FOR XML 和 FOR JSON 子句在视图中无效,内联 包含集合的函数、派生表和子查询 操作员。要解决此问题,请将包含集合运算符的 SELECT 包装起来 使用派生表或公用表表达式或视图并应用 FOR XML 或 FOR JSON 在它之上。

如何解决?

【问题讨论】:

    标签: sql-server tsql union for-xml


    【解决方案1】:

    我不明白你为什么在这里使用 XML。但错误是告诉您将该查询下推到派生表(子查询)或 CTE 中,如下所示:

    declare @xmlData xml
    declare @filedate date = getdate()
    declare @satdate date = '20140101'
    
    SET @xmlData = (
    
    select * from 
    ( SELECT @FileDate AS [FileDate] UNION ALL SELECT @satDate AS [FileDate] ) d
    FOR XML RAW, ELEMENTS, type
    
    )
    
    select @xmlData
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      • 2020-03-28
      相关资源
      最近更新 更多