【发布时间】:2014-07-03 17:32:03
【问题描述】:
我有一个包含以下列的表格
Col1(bigint) | Col2(datetime)| Col3(nvarchar(100))| Col4(xml)
第 4 列是一个 xml,如下所示,它可以包含任意数量的字段
<Fields>
<Field1>10</Field1>
<Field2>11</Field2>
<Field3>10</Field3>
<Field4>11</Field4>
</Fields>
我需要从表中查询多行。我正在创建一个获取 2 个参数的存储过程
参数1:@query(xml的类型)
<Rowset>
<Row>
<Col1>20140510123205321</Col1>
<Col2>2014-05-14T13:01:03.1426856+05:30</Col2>
<Col3>Source1</Col3>
</Row>
<Row>
<Col1>20140510123205322</Col1>
<Col2>2014-05-14T13:01:03.1426856+05:30</Col2>
<Col3>Source2</Col3>
</Row>
</Rowset>
参数2:@Fields(逗号分隔的字符串类型)
Field1,Field2,Field3,Field4
我期待以下格式的输出
Col1 | Col2 | Col3 | Field1 | Field2 | Field3 | Field4
-----------------------------------------------------------------
2014051092|2014-05-14|Source1| 10 | 21 | 12 | 43
2014051093|2014-05-14|Source1| 11 | 22 | 23 | 53
我已经根据存储过程中的第一个参数创建了一个表。
INSERT INTO #TempPricing
(
Col1,
Col2,
Col3
)
SELECT
Col1,
Col2,
Col3
FROM OPENXML(@handle, '/Rowset/Row', 2)
WITH
(
Col1 bigint,
Col2 datetime,
Col3 varchar(50)
)
拆分后如何旋转第二个参数,将其与上表合并并获取数据?
编辑 输出也可以是以下格式
Col1 | Col2 | Col3 | Fields
--------------------------------------
2014051092|2014-05-14|Source1|<Fields><Field1>10</Field1><Field1>11</Field1></Fields>
2014051093|2014-05-14|Source1|<Fields><Field1>20</Field1><Field1>21</Field1></Fields>
所以上述任何格式都可以工作
【问题讨论】:
-
我能够通过使用来自问题 stackoverflow.com/questions/23681510/… 的指令来实现上述目标
标签: sql sql-server tsql sql-server-2005 stored-procedures