几个月前,我们的供应商为我们的票务系统添加了一项功能,可让我们为票证添加任意数量的自定义字段。我想查询这些字段以及其他调用信息以进行报告,但每个可扩展字段都作为一行存储在数据库中。所以基本上你有这样的东西:
ext_doc_no call_record value
1 1001 Test
2 1001 test2
3 1001 moretest
我想要的是回询:
1001 Test test2 moretest
我尝试过使用PIVOT,但这对使用聚合函数等问题要求很高。关于如何做到这一点的任何其他想法?
编辑:我也尝试将每一行分别查询到主查询中,并使用函数......但这两种方法都太慢了。我需要一些东西来同时获取所有行,PIVOT它们然后加入主查询。
答案 0 :(得分:3)
尝试查看this answer。
它完全符合您的要求。
答案 1 :(得分:1)
请参阅此处Concatenate Values From Multiple Rows Into One Column Ordered SQL 2005 +
答案 2 :(得分:0)
您要做的是一个数据透视表(某些系统将其称为交叉表查询)。这应该可以帮助您获取更多帮助,但通常您需要知道在编写查询之前所期望的列。
答案 3 :(得分:0)
http://www.sqlservercentral.com/scripts/Miscellaneous/32004/
使用上页的脚本。
DECLARE @Values VARCHAR(1000) SELECT @Values = COALESCE(@Values + ', ', '') + Value FROM ..... WHERE .... SELECT @ValuesEND编辑:我不想粗鲁。但是你可以通过搜索“将多行组合成一个”来找到它。
答案 4 :(得分:0)
以XML格式返回数据
SELECT ...
FROM ...
...JOIN....
FOR XML AUTO