在 PostgreSQL 中使用 crosstab() 透视表

问题描述 投票:0回答:1

我在 Postgres 中有这张表:

create table test("Product id", "Product Name", "Category", "Operator", piece)
as values
 (10,   'Carbonara',    'C1',   'User1',    1)
,(11,   'Spaghetti',    'C1',   'User2',    1)
,(12,   'Coke',         'C2',   'User1',    1)
,(10,   'Carbonara',    'C1',   'User2',    2)
,(11,   'Spaghetti',    'C1',   'User1',    1)
,(11,   'Spaghetti',    'C1',   'User3',    5)
,(12,   'Coke',         'C2',   'User3',    1)
;

我想要这样的结果:

类别 用户1 用户2 用户3
C1 2 3 5
C2 1 0 1

我用

crosstab()
函数做了一些测试,但没有得到任何结果。

我已经尝试过

crosstab()
遵循一些教程并在这里回答,但我不太明白如何创建这个查询。

sql postgresql pivot-table postgres-crosstab
1个回答
0
投票

您可以使用聚合

filter
子句来透视表。如果您希望在给定 coalesce()
 中没有行(所有行都会在 
0
之前被过滤掉)时获得
Operator
,请添加
Category

db<>fiddle 的演示 sum()


类别C1C2
用户1 用户2 用户3
2 3 5
1 0 1
© www.soinside.com 2019 - 2024. All rights reserved.