2015-04-21 2 views
2

Ниже выводится мне нужно получить:Как объединить FOR XML PATH ROOT RAW ELEMENT?

<myRoot xmlns="myNamespace" xmlns:xsi="http://www.xxx.zzz/XMLSchema-instance"> 
<myPath> 
    <GrpHdr> 
     <MsgId>decimal</MsgId> 
    </GrpHdr> 
    <Stmt> 
     <Bal> 
      <Tp> 
       <Cd>string</Cd> 
      </Tp> 
     </Bal> 
    </Stmt> 
    <Amt Ccy="string">decimal</Amt> 
</myPath> 

Проблема (моя проблема) является:

<Amt Ccy="string">decimal</Amt> 

Используя внутренний запрос и FOR XML RAW можно получить только:

<Amt Ccy="string" /> 

Мне все еще нужно разместить десятичное значение, которое на самом деле является значением Am a nd закрыть его с помощью

</Amt> 

Это выполнимо? Приветствия. не

DECLARE @DayID datetime 
    DECLARE @Account numeric(26) 
    SELECT 
    S.Statement   AS "GrpHdr/MsgId", 
    'OBCD'    AS "Stmt/Bal/Tp/Cd", 
    (SELECT [dbo].[GetAccountCurrency](@DayID , @Account)  AS "Ccy" 
    FROM [output].[statements] AS S 
    WHERE DayID = @DayID AND Account = @Account AND TYPE = 'D' 
    FOR XML RAW ('Amt') , TYPE) 
    FROM [output].[statements] AS S 
    JOIN [dbo].[TAP00201]  AS T 
    ON DayID = date AND 
    CAST (RIGHT(CONVERT(CHAR(26), Account), 10) AS NUMERIC) = DMACCT 
    WHERE DayID = @DayID AND Account = @Account AND TYPE = 'D' 
    FOR XML PATH ('BkToCstmrStmtV01'), ROOT ('Document') 

Ничто, чтобы Amt значение, как и ранее, так как у меня нет ни малейшего представления, как закрыть его со значением Amount не должно быть принято либо из записи таблицы или разобрано как переменные.

+0

Пожалуйста, добавьте ваш текущий запрос, так что это легче помочь –

+1

Спасибо Sami Kuhmonen за ответ. Добавлен запрос – stormix

ответ

0

Это, как правило, гораздо проще в использовании for xml path:

... 
select 
    dbo.GetAccountCurrency(@DayID , @Account) as "@Ccy", 
    'decimal' as "data()" 
from [output].[statements] as S 
where S.DayID = @DayID and S.Account = @Account and S.[Type] = 'D' 
for xml path('Amt'), type 
... 
+0

wowie! большое спасибо Роман :) – stormix