如何创建枢轴以避免 ID 重复?

how to create pivots to avoid ID duplicates?

我有以下 table('信息')

ID    |    value
1     |    A
1     |    B
2     |    A
3     |    A
3     |    B
3     |    C
4     |    A

如何使用查询来呈现以下内容table?

ID   |   A   |   B   |   C   | 
1        X       x      null   
2        X      null    null
3        X       X       X
4        X      null    null

我有以下代码:

select id,  CASE WHEN value= 'A' THEN 'X'
   ELSE NULL END AS A,
CASE WHEN value= 'B' THEN 'X'
   ELSE NULL END AS B,
CASE WHEN value= 'C' THEN 'X'
   ELSE NULL END AS C
FROM information group by id;

但我也为每个 ID 设置了一行。

您只需要聚合函数:

select id, 
       MAX(CASE WHEN value = 'A' THEN 'X' END) AS A,
       MAX(CASE WHEN value = 'B' THEN 'X' END) AS B,
       MAX(CASE WHEN value = 'C' THEN 'X' END) AS C
FROM information
group by id;

您可以使用条件聚合:

SELECT id, 
       MAX(CASE WHEN value= 'A' THEN 'X' END) AS A,
       MAX(CASE WHEN value= 'B' THEN 'X' END) AS B,
       MAX(CASE WHEN value= 'C' THEN 'X' END) AS C
FROM information 
GROUP BY id;

Demo here