首页 > 解决方案 > 如何按汇总结果将分组转换为列?

问题描述

我在数据库中有以下结构:

类别 子类别 物品
食物 水果 香蕉
食物 水果 橙子
食物 蔬菜 土豆

我发现我可以使用GROUP BY ROLLUP如下递归总结类别:

SELECT Category, Subcategory, Item, count(*)
FROM Items
GROUP BY ROLLUP
(
    Category,
    Subcategory,
    Item
)

这将给出以下结果:

类别 子类别 物品 组内计数
食物 水果 香蕉 1
食物 水果 橙子 1
食物 水果 无效的 2
食物 蔬菜 土豆 1
食物 蔬菜 无效的 1
食物 无效的 无效的 3

问题

我想知道,是否有任何简单的方法可以将这些结果从行转换为列,以便我摆脱NULL值并获得如下列中的计数?

类别 子类别 物品 CountInSame子类别 CountInSameCategory
食物 水果 香蕉 2 3
食物 水果 橙子 2 3
食物 蔬菜 土豆 1 3

标签: postgresql

解决方案


推荐阅读