Объединение в xml-запросе выбора

#sql #xml #tsql

#sql #xml #tsql

Вопрос:

Я выбираю данные из таблицы в формате xml. Я использовал для этого xml-путь, и мне это удалось. Но в xml мне также нужно добавить один раздел с именем return as dummy, который будет использоваться позже. У меня также есть запрос выбора, чтобы получить раздел возврата в виде xml. Но теперь мне нужно объединить оба этих запроса выбора, чтобы получить единый xml.

Мой код

     SELECT 
 CAST(IDNO AS VARCHAR(8)) AS [IDNO]         
 ,CAST(Code AS VARCHAR(4)) AS [CODE]         
 ,CAST(Amt AS VARCHAR(18)) AS [Amt]         
 FROM tbl1
 FOR XML PATH('ITEM'), ROOT('Table1'), TYPE 


SELECT 
'' AS INAME
,'' AS UNQ_ID
,'' AS STATUS
FOR XML PATH('IT_RETURN')
 

пожалуйста, посоветуйте мне.

Редактировать: мой ожидаемый результат

 <Table1>
  <ITEM>
    <IDNO>0283883</IDNO>
    <CODE>ABC</CODE>
    <Amt>20</Amt>
  </ITEM>
  <ITEM>
    <IDNO>0374747</IDNO>
    <CODE>DHF</CODE>
    <Amt>10</Amt>
  </ITEM>
</Table1>
<IT_RETURN>
  <INAME></INAME>
  <UNQ_ID></UNQ_ID>
  <STATUS></STATUS>
</IT_RETURN>
 

Ответ №1:

Следующее поможет вам:

 DECLARE @tbl1 TABLE (
    IDNO VARCHAR(8),
    Code VARCHAR(4),
    Amt VARCHAR(18)
)
INSERT INTO
    @tbl1
VALUES
    ( '0283883', 'ABC', '20' ),
    ( '0374747', 'DHF', '10' )

SELECT (
    SELECT 
        CAST(IDNO AS VARCHAR(8)) AS [IDNO],
        CAST(Code AS VARCHAR(4)) AS [CODE],
        CAST(Amt AS VARCHAR(18)) AS [Amt]         
    FROM
        @tbl1
    FOR XML PATH('ITEM'), ROOT('Table1'), TYPE 
    ), (
    SELECT 
        '' AS INAME
        ,'' AS UNQ_ID
        ,'' AS STATUS
    FOR XML PATH('IT_RETURN'), TYPE
) FOR XML PATH('')
 

Комментарии:

1. Я рад, что это помогло =)

Ответ №2:

Используйте приведенный ниже запрос:

     SELECT IDNO
,CODE
,Amt
FROM
(
    SELECT 
    CAST('56' AS VARCHAR(8)) AS [IDNO]         
    ,CAST('44' AS VARCHAR(4)) AS [CODE]         
    ,CAST('33434' AS VARCHAR(18)) AS [Amt]         
    FROM tbl1

    UNION ALL

    SELECT 
    '' --AS INAME
    ,'' --AS UNQ_ID
    ,'' --AS STATUS
) t
FOR XML PATH('ITEM'), ROOT('Table1'), TYPE