我正在使用微软 SQL Server 2008。
我有一张类似下面这样的表:
|======================================================|
| RespondentId | QuestionId | AnswerValue | ColumnName |
|======================================================|
| P123 | 1 | Y | CanBathe |
|------------------------------------------------------|
| P123 | 2 | 3 | TimesADay |
|------------------------------------------------------|
| P123 | 3 | 1.00 | SoapPrice |
|------------------------------------------------------|
| P465 | 1 | Y | CanBathe |
|------------------------------------------------------|
| P465 | 2 | 1 | TimesADay |
|------------------------------------------------------|
| P465 | 3 | 0.99 | SoapPrice |
|------------------------------------------------------|
| P901 | 1 | N | CanBathe |
|------------------------------------------------------|
| P901 | 2 | 0 | TimesADay |
|------------------------------------------------------|
| P901 | 3 | 0.00 | SoapPrice |
|------------------------------------------------------|
我想把行转换成列,使得这个表格看起来像这样:
|=================================================|
| RespondentId | CanBathe | TimesADay | SoapPrice |
|=================================================|
| P123 | Y | 3 | 1.00 |
|-------------------------------------------------|
| P465 | Y | 1 | 0.99 |
|-------------------------------------------------|
| P901 | N | 0 | 0.00 |
|-------------------------------------------------|
(这里的示例数据是任意制作的,所以有些荒谬)
源表是一个临时表,大约有70,000行。
我需要写什么SQL语句来做到这一点?
更新
- 我甚至不知道PIVOT是否是正确的方法。
- 我不知道要在哪一列上进行PIVOT。
- 文档提到了
<聚合函数>
和<被聚合的列>
,而我并不想聚合任何内容。
先感谢您的帮助。
PIVOT
吗?http://msdn.microsoft.com/zh-cn/library/ms177410.aspx - Neil KnightPIVOT
命令来看,你必须使用一个聚合函数。我不想要一个聚合函数,我只想把值翻转过来。 - funkymushroom