1
XMLデータをテーブルに細断するためにNodesメソッドを使用しています。私は特定のXML要素が必要ですが、そのバックアップ(私の貧弱な構文、XMLを扱うことに慣れていないこと)を、私が細断処理しているところからXMLで赦してください。ノードを使用したXMLのバックアップの移動
XML::
<ToDoList xmlns="----.----.MappingObjects/XmlSchemas/ToDoList.xsd">
<Step>
<StepId>f3ab5132-fcf4-47c4-929f-ab7464d3bcc7</StepId>
<Rank>1</Rank>
<IsComplete>true</IsComplete>
<CompletionDate>2017-04-17T17:12:45Z</CompletionDate>
<CompletionUser>Michael Johnson</CompletionUser>
<Text></Text>
<CalibrationId>3</CalibrationId>
<CalibrationValues>
<Value>
<Standard>1111</Standard>
<UnitOfMeasureName>NewU</UnitOfMeasureName>
<Min>1111</Min>
<Normal>1112</Normal>
<Max>1113</Max>
<BeforeReading>1111</BeforeReading>
<AfterReading>1112</AfterReading>
<DateCalibrated>2017-04-17T17:12:00Z</DateCalibrated>
<FailBefore>false</FailBefore>
<FailAfter>false</FailAfter>
</Value>
<Value>
<Standard>245.000</Standard>
<UnitOfMeasureName>NewU</UnitOfMeasureName>
<Min>245</Min>
<Normal>250</Normal>
<Max>280</Max>
<BeforeReading>245</BeforeReading>
<AfterReading>250</AfterReading>
<DateCalibrated>2017-04-17T17:12:00Z</DateCalibrated>
<FailBefore>false</FailBefore>
<FailAfter>false</FailAfter>
</Value>
</CalibrationValues>
</Step>
</ToDoList>
SQL:
既存のテーブルには、次の列を戻し;with XMLNAMESPACES('----.-----.MappingObjects/XmlSchemas/ToDoList.xsd' as NS)
select WOId,
N.Step.value('(NS:Standard)[1]', 'nvarchar(max)') as [Standard],
N.Step.value('(NS:UnitOfMeasureName)[1]','nvarchar(32)') as [UOM],
N.Step.value('(NS:Min)[1]','float') as [Min],
N.Step.value('(NS:Normal)[1]','float') as Normal,
N.Step.value('(NS:Max)[1]','float') as [Max],
N.Step.value('(NS:BeforeReading)[1]','float') as BeforeReading,
N.Step.value('(NS:AfterReading)[1]','float') as AfterReading,
dbo.fn_clr_GetCustomerLocalTimeFromUTC(@CUSTOMERTIMEZONE, N.Step.value('(NS:DateCalibrated)[1]','datetime')) as DateCalibrated,
N.Step.value('(NS:FailBefore)[1]','bit') as FailBefore,
N.Step.value('(NS:FailAfter)[1]','bit') as FailAfter
from tblWorkOrderToDoList WOTD
cross apply Data.nodes('//NS:Value') N(Step)
(簡潔にするために短縮):
私は私が願うことは、関連するすべてのコードで、掲載しましたWOId標準UOM最小標準最大読取前アフターリーディング日付較正
私が見てみたい:CalibrationIdは(上記のXMLを使用して)各返された行は3である
WOId CalibrationId標準UOM分通常の最大BeforeReading AfterReading
。
あなたは両方の要素から必要な情報を得ることができるようにあなたは、まずStep
要素レベルにして、
Value
に、二回XMLを細断処理することができます
または、おそらくを移動する..' '使用して二回破砕せずに'(../../NS:CalibrationId)[1]' – har07