SQL选择列中的唯一值

时间:2014-02-25 23:12:02

标签: sql select plsql

我有一张像

这样的表格
| ID | COL1 | COL2 |
| 1  |   1  |  w   |
| 1  |   2  |  x   |
| 2  |   1  |  y   |
| 2  |   2  |  z   |

当我查询它时,我想要

| ID | COL2:1 | COL2:2 |    <--- (when COL1=1 and COL1 =2)
| 1  |   w    |    x   |
| 2  |   y    |    z   |

我已经为同一张表尝试了GROUP BYJOIN,但我得到的是重复项而不是分组数据。我需要一些指导,以了解如何获得我期待的结果。

1 个答案:

答案 0 :(得分:2)

您可以使用MAX()CASE语句:

SELECT ID
      ,MAX(CASE WHEN Col1 = 1 THEN Col2 END) AS Col2_1
      ,MAX(CASE WHEN Col1 = 2 THEN Col2 END) AS Col2_2
FROM YourTable
GROUP BY ID

演示:SQL Fiddle