我正在尝试开发一个查询,其中单个列的值被拆分为两个或多个单独的列,以反映特定ID是否具有每个不同的值。
例如,我有一个这样的表:
------------
| id | Val |
|----|-----|
| 1 | A |
| 1 | B |
| 2 | A |
| 3 | A |
| 4 | B |
| 5 | A |
------------
该查询将生成一个如下所示的表:
----------------------
| id | Val_1 | Val_2 |
|----|-------|-------|
| 1 | A | B |
| 2 | A | |
| 3 | A | |
| 4 | | B |
| 5 | A | |
----------------------
具体来说,我希望这个查询只显示缺少值的id(即id" 1"会被淘汰出局)。
到目前为止,我已经尝试使用自内部联接,但是我无法找到选择WHERE子句来生成它。
任何建议?
谢谢!
答案 0 :(得分:2)
更新:过滤掉具有Val_1和Val_2
的列SELECT * FROM
(
SELECT id, MAX(CASE WHEN val='A' THEN 'A' END) as Val_1,
MAX(CASE WHEN val='B' THEN 'B' END) as Val_2
FROM table1 GROUP BY id
)a
WHERE Val_1 IS NULL OR Val_2 IS NULL;