admin

从表中选择值,其中一列中的值分为多列

sql

我正在尝试开发一个查询,在该查询中,单列的值分为两个或更多单独的列,以反映特定的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”将被从表中剔除)。

到目前为止,我已经通过使用一个内部内部联接进行了尝试,但是我无法找到用于产生此结果的select WHERE子句。

有什么建议?

谢谢!


阅读 131

收藏
2021-06-07

共1个答案

admin

更新:筛选出具有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;
2021-06-07