如何在T-SQL中将多行返回为单行?

4
几个月前,我们的供应商在我们的工单系统中添加了一个功能,允许我们向工单添加任意数量的自定义字段。为了报告目的,我想查询这些字段以及其他呼叫信息,但每个可扩展字段都存储为数据库中的一行。因此,基本上您会看到以下内容:
ext_doc_no    call_record    value
1             1001           Test
2             1001           test2
3             1001           moretest

我想查询的内容是:

1001    Test    test2    moretest

我尝试使用PIVOT,但它对于使用聚合函数等方面要求相当严格。你有没有其他的想法来完成这个任务?

编辑:我还尝试了将每一行单独查询到主查询中,并使用函数...但两种方法都太慢了。我需要一些东西能够一次获取所有行,将它们进行PIVOT操作,然后加入到主查询中。

5个回答

3

请看这个答案,它可以完全满足你的需求。

这个答案可以做到你想要的一切。


1
真正令人难过的是,我以前用过这种技巧... 我怪抗生素。 :P - CodeRedick
5
此页面已经无法访问(404错误)。 - ganders

1

0

以 XML 格式返回数据

SELECT ...
FROM ...
...JOIN....
FOR XML AUTO

0
你想要做的是一个数据透视表(有些系统称之为交叉查询)。这应该可以帮助你在谷歌上寻找额外的帮助,但通常在编写查询之前,你需要知道你期望的列。

0

http://www.sqlservercentral.com/scripts/Miscellaneous/32004/

使用上面页面的脚本。

    DECLARE @Values VARCHAR(1000)
SELECT @Values = COALESCE(@Values + ', ', '') + Value FROM ..... WHERE ....
SELECT @ValuesEND

编辑:我不想无礼。但你可以搜索“将多行合并为一行”来找到此内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接