如何创建枢轴以避免 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;
我有以下 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;