我的数据看起来像:
col1 col2 attr val
ABC 123 A 10
ABC 123 B 18
XYZ 123 A 5
XYZ 123 B 11
ABC 888 A 24
ABC 888 B 13
XYZ 888 A 25
.
.
.
基本上存在COL1、COL2的各种组合,并且对应于与它们相关联的每个
attr
,它们有一个单独的记录用于val
。我需要以下形式的输出:
col1 col2 A_val B_val
ABC 123 10 18
XYZ 123 5 11
(对于
col1 col2
的每个唯一组合)这种查询对我来说是个新领域,所以我不知道从哪里开始。它可能涉及到类似于
CASE WHEN attr='A' THEN val END as A_val
的内容,但我不确定如何构造它。 最佳答案
你可以这样做:
SELECT col1,
col2,
MAX(CASE WHEN attr='A' THEN val END) A_val,
MAX(CASE WHEN attr='B' THEN val END) B_val
FROM table_name
GROUP BY col1,
col2
由于
NULL
s以降序排列在最后,如果没有匹配的条件,CASE
将返回NULL
,因此MAX
将为每个列提供正确的属性。关于mysql - 根据另一列获取值作为单独的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25786353/