!!!警告!!!
最亲密的SQL专家,请继续阅读之前开始尖叫。 这个超级非规范化的表结构是 申请后获得一些 组合 - 糖很好地归一化 数据集:)。我正在避免 重新规范化这个结果集,因为我 想要保持简单完整 过程(也不会使用此数据 在应用程序的另一个地方)。 (是的,Codd。我知道你在想什么)。
有五列包含数值
A | B | C | D | E
-------------------
2 | 3 | 4 | 1 | 5
3 | 6 | 1 | 5 | 4
4 | 5 | 7 | 1 | 3
我希望在排序后获取值的串联:
ABCDE
-----------
1 2 3 4 5
1 3 4 5 6
1 3 4 5 7
最好的方法是什么?
答案 0 :(得分:3)
回顾过为什么你需要这样做的严肃问题,虽然很尴尬,但可以实现:
Select ...
, Stuff(
(
Select ' ' + Z.Col
From (
Select PKCol, A As Col From Table
Union All Select PKCol, B From Table
Union All Select PKCol, C From Table
Union All Select PKCol, D From Table
Union All Select PKCol, E From Table
) As Z
Where Z.PKCol = Table.PKCol
Order By Col
For Xml Path('')
), 1, 1, '') As Combined
From Table
显然,数据库从未被设计为对列进行排序,这就是解决方案难以实现的原因。