我希望能够使用SQL查询中的输出作为SQL Server 2012中XML查询中的参数。下面是一个示例。sql server 2012中xml的问题
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>
元素。我需要这是动态的。如果taxID
是1,那么我希望我的XML查询返回Some Tax
,如果它是2,那么它将返回Some Other Tax
。
我想:
Select taxID, someItem, @xml.query('
for $i in Taxes/Tax/uniqueTaxID
where $i = ' + taxID + '
return $i')
但是,这给了我错误
XML数据类型的方法“查询”的参数1必须是一个字符串文字。
如果我直接在它工作正常键入数字,所以我知道它有什么与我的串联字符串
是否有理由使用XML来做到这一点?为什么不在一个查询中使用表之间的外连接? – 2013-03-25 20:23:38