SQLServer2012のXMLクエリのパラメーターとしてSQLクエリからの出力を使用できるようにしたいと思います。次に例を示します。
Declare @xml = (Select uniqueTaxID, taxName
from Taxes
where orderGroup = @someNumber
for xml path('Tax'), root('Taxes'))
期待される出力は、注文に適用されるすべての税金を私に与えます。税金は1つ、または複数ある可能性があります。
出力例:
<Taxes>
<Tax>
<uniqueTaxID>1</uniqueTaxID>
<taxName>Some Tax</taxName>
</Tax>
<Tax>
<uniqueTaxID>2</uniqueTaxID>
<taxName>Some Other Tax</taxName>
</Tax>
</Taxes>
今、私は別の簡単なSQLクエリを持っています
Select taxID, someItem, @xml.query('
for $i in Taxes/Tax/uniqueTaxID
return Taxes/Tax/taxName
') from someGroupOfItems
残念ながら、それが書かれている方法では、私は両方の<taxName>
要素を取得します。これは動的である必要があります。1の場合taxID
、XMLクエリはを返しSome Tax
、2の場合は、を返しSome Other Tax
ます。
私は試した:
Select taxID, someItem, @xml.query('
for $i in Taxes/Tax/uniqueTaxID
where $i = ' + taxID + '
return $i')
しかし、それは私にエラーを与えました
XMLデータ型メソッド"query"の引数1は、文字列リテラルである必要があります。
数字を直接入力するとうまくいくので、文字列を連結することと関係があることがわかります