2
我有一個表:TSQL - FOR XML數據添加到根節點
CREATE TABLE [dbo].[xdOthPay]
(
AccountNo char(10) NOT NULL,
PaymentDoneOn datetime NULL,
PaymentDoneBy char(30) NULL,
InvoiceNumber char(10) NULL,
AmountPaid decimal(12,3) NULL,
Comments char(254) NULL,
ClientID char(50) NULL,
InstallID char(50) NULL,
BatchID char(14) NOT NULL
)
,我需要經常通過SSIS和SFTP出口。
出口的接收器指定格式:
<?xml version="1.0" encoding="utf-8"?>
<Payments ClientId="10865" xmlns="http://someUrl.com/core/xml/payment">
<Payment>
<AccountNo>VALUE</AccountNo>
<PaymentDoneOn>VALUE</PaymentDoneOn>
<PaymentDoneBy>VALUE</PaymentDoneBy>
<InvoiceNumber>VALUE</InvoiceNumber>
<AmountPaid>VALUE</AmountPaid>
<Comments>VALUE</Comments>
</Payment>
</Payments>
這是我的T-SQL語句:
SELECT
AccountNo,
PaymentDoneOn,
PaymentDoneBy,
InvoiceNumber,
AmountPaid,
Comments
FROM
xdMOBOthPay
FOR XML PATH ('Payment'), ROOT ('Payments'), ELEMENTS
這導致:
<Payments>
<Payment>
<AccountNo> 972140</AccountNo>
<PaymentDoneOn>2017-06-08T00:00:00</PaymentDoneOn>
<PaymentDoneBy>R Entry BA13177 </PaymentDoneBy>
<InvoiceNumber> 3804</InvoiceNumber>
<AmountPaid>468.000</AmountPaid>
<Comments>Non-Onl Payment </Comments>
</Payment>
...
非常接近,但我需要將數據存入根元素(Payments)。表ClientID
中的列需要作爲ClientID
屬性包含在根元素中。 ClientID
將在表中的所有行上保持一致。
我已經探索了幾種方法,但我沒有得到格式要求。
感謝 通潤
嗨@TT,從我認爲,這有可能是下面的''幾個''節點......而你的問題。當然,'CHAR'應該被替換爲'VARCHAR'。或者可以使用'RTRIM()'。 –
Shnugo
@Shnugo啊,是的,這可能會給錯誤的XML,謝謝你指出。 –
@Shnugo我從不同的方式開始,用子查詢選擇Payment元素....只是看到Payment元素也獲得了名稱空間聲明。有時,SQL Server中的XML處理非常混亂。 –