【发布时间】:2021-10-21 07:31:49
【问题描述】:
大家好,我有一个关于组合同样具有 XML 列的类似 ID 的问题。
我正在尝试合并的数据:
_ID _xml _indivisualCommaList _eachIndividual
------ ------------------------------------------------------------------------------------------------- ----------------------- ---------------
46589 <Individual><TBS>768-hER-382</TBS><Categories /><TBS2>768-hER-382,908-YTY-354</TBS2></Individual> 768-hER-382,908-YTY-354 768-hER-382
46589 <Individual><TBS>768-hER-382</TBS><Categories /><TBS2>768-hER-382,908-YTY-354</TBS2></Individual> 768-hER-382,908-YTY-354 908-YTY-354
在哪里
_ID = INT
_xml = XML
_indivisualCommaList = VARCHAR(MAX)
_eachIndividual = VARCHAR(MAX)
上面的漂亮(更容易阅读)XML:
<Individual>
<TBS>768-hER-382</TBS>
<Categories />
<TBS2>768-hER-382,908-YTY-354</TBS2>
</Individual>
<Individual>
<TBS>768-hER-382</TBS>
<Categories />
<TBS2>768-hER-382,908-YTY-354</TBS2>
</Individual>
无论返回多少行,XML、ID 和 _indivisualCommaList 都将始终相同。唯一唯一的列是 _eachIndividual。
所以我尝试使用以下查询将类似的 ID 组合在一起
SELECT
*
FROM
@tblData
WHERE
_ID = @AssetID
GROUP BY
_ID
当然,由于我的 XML 列,我收到以下错误:
列“@tblData._xml”在选择列表中无效,因为它不是 包含在聚合函数或 GROUP BY 子句中。
所以我真的不确定我可以做些什么来合并这些行?
我希望得到的最终结果是:
_ID _xml _indivisualCommaList _eachIndividual
------ ------------------------------------------------------------------------------------------------- ----------------------- -----------------------
46589 <Individual><TBS>768-hER-382</TBS><Categories /><TBS2>768-hER-382,908-YTY-354</TBS2></Individual> 768-hER-382,908-YTY-354 768-hER-382,908-YTY-354
那么,这样可以吗?
【问题讨论】:
-
“XML、ID 和 _indivisualCommaList 将始终相同” - 然后仅按 ID 聚合 _eachIndividual 并将其加入。
-
@Serg Mind 展示了一个例子?
-
查看答案。
-
XML需要一个根节点,这里要什么?
标签: sql sql-server xml tsql sql-server-2016