1
我有一個看起來像這樣的XML數據文件:導入XML屬性內容在SQL Server 2005中
<Sales>
<Store Number="8" Date="2012-08-20T03:00:00">
<Value Field="CanceledOrders" Value="65.00"/>
<Value Field="TotalDollars" Value="13.57"/>
</Store>
<Store Number="10" Date="2012-08-20T03:00:00">
<Value Field="CanceledOrders" Value="38.00"/>
<Value Field="TotalDollars" Value="29.22"/>
</Store>
</Sales>
我抓我的頭就如何提取到這樣一個正常的SQL表本:
+--------+---------------------+----------------+--------------+
| Number | Date | CanceledOrders | TotalDollars |
+--------+---------------------+----------------+--------------+
| 8 | 2012-08-20T03:00:00 | 65.00 | 13.57 |
| 10 | 2012-08-20T03:00:00 | 38.00 | 29.22 |
+--------+---------------------+----------------+--------------+
這是我到目前爲止。我無法弄清楚如何匹配XML屬性內容值。 我想匹配/ Sales/Store/Value/@字段內容並從/ Sales/Store/Value/@ Value返回值。
DECLARE @X AS xml
SET @X = '<Sales>
<Store Number="8" Date="2012-08-20T03:00:00">
<Value Field="CanceledOrders" Value="65.00" />
<Value Field="TotalDollars" Value="13.57" />
</Store>
<Store Number="10" Date="2012-08-20T03:00:00">
<Value Field="CanceledOrders" Value="38.00" />
<Value Field="TotalDollars" Value="29.22" />
</Store>
</Sales>'
-- This is my start but it obviously doesn't return what I need.
SELECT Y.ID.value('(@Number)[1]', 'int') AS Number,
Y.ID.value('(@Date)[1]', 'datetime') AS [Date],
Y.ID.value('(Value/@Field)[1]', 'varchar(max)') AS "Field",
Y.ID.value('(Value/@Value)[1]', 'varchar(max)') AS "Value"
FROM @X.nodes('/Sales/Store') AS Y(ID)
馬克,你是一個紳士和學者。謝謝! – programmer