将SQL行转换为列

时间:2016-05-19 13:45:24

标签: sql-server sql-server-2012

我在理解获得以下结果集的最佳方法时遇到了一些困难。

我想要更新的结果集(数千行):

ID    Question   Answer
---    --------  --------
1      Business    NULL
1      Job         Other
1      Location    UK
2      Business    Legal
3      Location    US
4      Location    UK

To This:

ID     Buisness   Job    Location  
---    --------   ---    --------
1      NULL       Other  UK
2      Legal      NULL   NULL
3      NULL       NULL   US
4      NULL       NULL   UK

我一直在关注SELF JOINS和PIVOT表,但想了解最好的方法,因为我无法达到所需的输出。

由于 加里

2 个答案:

答案 0 :(得分:2)

如果你想使用pivot,你可以这样做:

CREATE TABLE #Table1
    ([ID] int, [Question] varchar(8), [Answer] varchar(5))
;

INSERT INTO #Table1
    ([ID], [Question], [Answer])
VALUES
    (1, 'Business', NULL),
    (1, 'Job', 'Other'),
    (1, 'Location', 'UK'),
    (2, 'Business', 'Legal'),
    (3, 'Location', 'US'),
    (4, 'Location', 'UK')
;

select * from 
(select * from #Table1) S
pivot (
  max(Answer) for Question in (Business, Job, Location)
) P

答案 1 :(得分:1)

select
id,
max(case when question='business' then answer end) 'business',
max(case when question='Job' then answer end) 'Job',
max(case when question='Location' then answer end) 'Location'
group by id
相关问题