我有个问题:
SELECT
SUM(CASE WHEN color = 'blue' THEN 1 ELSE 0 END) AS "Blue",
SUM(CASE WHEN color = 'purple' THEN 1 ELSE 0 END) AS "Purple",
SUM(CASE WHEN color = 'yellow' THEN 1 ELSE 0 END) AS "Yellow",
SUM(CASE WHEN color= 'blue' THEN 1 WHEN color= 'yellow' THEN -1 END) AS "Mixed"
FROM table;
结果是一个4列1行的表:
e、 g.蓝色|紫色|黄色|混合色
但我希望结果显示在4行1列中,如下所示:
蓝色
蓝色
紫色
黄色的
混合的
有人知道我在这种情况下能做什么吗?我一直在研究这个。
2条答案
按热度按时间omvjsjqw1#
这有点痛苦,因为混合值——简单的聚合是不够的。因此,使用横向连接取消Pivot:
实际上,在postgres中,你也可以这样写:
pxq42qpu2#
对于前3个计数器,您可以
group by color
集料与使用UNION ALL
为了Mixed
:此查询将返回2列。
如果您不想要第1列,那么: