我的数据如下:
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
的东西,但我不确定如何构建它。
答案 0 :(得分:1)
您可以执行以下操作:
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
以递减顺序排在最后,CASE
返回NULL
表示没有条件匹配,MAX
会为每列提供正确的属性。< / p>