How can I return multiple rows as a single row in

2020-03-24 05:43发布

A few months ago our vendor added a capability to our ticketing system which lets us add any number of custom fields to a ticket. I'd like to query these fields out along with the other call information for reporting purposes, but each extensible field is stored as a row in the database. So basically you have something like this:

ext_doc_no    call_record    value
1             1001           Test
2             1001           test2
3             1001           moretest

What I'd like is to query back:

1001    Test    test2    moretest

I've tried to use PIVOT, but that's rather demanding about things like using an aggregate function. Any other ideas on how to do this?

EDIT: I also tried querying each row separately into the main query, and using a function... but both methods are way too slow. I need something to get all the rows at once, PIVOT them and then join into the main query.

5条回答
成全新的幸福
3楼-- · 2020-03-24 06:25

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

Using the script from above page.


    DECLARE @Values VARCHAR(1000)

    SELECT  @Values = COALESCE(@Values + ', ', '') + Value
    FROM .....
    WHERE ....

    SELECT @ValuesEND

EDIT: I don't want to be rude. But you could find this by searching "combining multiple rows into one".

查看更多
狗以群分
4楼-- · 2020-03-24 06:26

Try to look at this answer.

It does exactly what you want to do.

查看更多
叼着烟拽天下
5楼-- · 2020-03-24 06:28

What you want to do is a pivot (some systems call it a crosstab query). That should help you google for additional help, but generally you need to know what columns you expect before writing the query.

查看更多
beautiful°
6楼-- · 2020-03-24 06:36

return data as XML

SELECT ...
FROM ...
...JOIN....
FOR XML AUTO
查看更多
登录 后发表回答