我有这个选择:
Select CASE WHEN tab1.type = 'aaa' THEN tab1.price ELSE 0 END col1,
CASE WHEN tab1.type = 'bbb' THEN tab1.price ELSE 0 END col2,
CASE WHEN tab1.type = 'ccc' THEN tab1.price ELSE 0 END col3,
CASE WHEN tab1.type = 'ddd' THEN tab1.price ELSE 0 END col4
FROM tab1
INNER JOIN tab2
ON tab1.id = tab2.id_fruits

给出这个结果
col1 col2 col3 col4
20 0 0 0
0 40 0 0
0 0 60 0
是否有可能
col1 col2 col3 col4
20 40 60 0
我希望有一行为每个不同于零的列获取单个值,如果所有值都为零,则取零 感谢
答案 0 :(得分:5)
这将是一种方式:
SELECT MAX(CASE WHEN tab1.type = 'aaa' THEN tab1.price ELSE 0 END) col1,
MAX(CASE WHEN tab1.type = 'bbb' THEN tab1.price ELSE 0 END) col2,
MAX(CASE WHEN tab1.type = 'ccc' THEN tab1.price ELSE 0 END) col3,
MAX(CASE WHEN tab1.type = 'ddd' THEN tab1.price ELSE 0 END) col4
FROM tab1
INNER JOIN tab2
ON tab1.id = tab2.id_fruits
答案 1 :(得分:1)