ProductSales表的示例。
- 表 创建表productsales ( country varchar(20), salesman varchar(20), 金额整数 )
- 将几条记录插入到产品中 插入到productsales值('UK','Sam',25000); ... ...
- 查询要在plpgsql中的“crosstab”中执行,而不是使用pivot运算符。 选择推销员,英国,美国,阿联酋 来自productsales pivot - 我知道这在plpgsql中不起作用 ( 总和(量) 对于国家 IN([英国],[美国],[阿联酋]) ) AS pt
答案 0 :(得分:1)
要创建crosstab
,您可以使用PostgreSQL附带的tablefunc模块。您首先需要安装它(这样做取决于您安装PostgreSQL的方式),然后创建扩展:
CREATE EXTENSION tablefunc;
有了这个,你可以简单地进行crosstab
查询:
SELECT * FROM crosstab($$
/* Your normal query with your own filters (the fields must be always at the same order) */
SELECT salesman, country, amount
FROM productsales
WHERE country IN ('UAE','UK','US')
/* The ORDER is really important here */
ORDER BY 1, 2
$$,
/* The values that will be crossed, notice they are ordered alphabetically */
$$VALUES('UAE'),('UK'),('US')$$
) AS
/* Here you tell which columns and types you expect */
productsales(salesman varchar(20), uae integer, uk integer, us integer);