gpt4 book ai didi

sql - Postgresql 将行转列

转载 作者:太空狗 更新时间:2023-10-30 01:58:10 24 4
gpt4 key购买 nike

我有这个问题

select * from sales

shop | date | hour | row_no | amount
-----------+------------+-----------+--------+-----------
shop_1 | 2012-08-14 | 00:08:00 | P01 | 10
shop_2 | 2012-08-12 | 00:12:00 | O05 | 40
shop_2 | 2012-08-12 | 00:12:00 | A01 | 20

我有 1 百万行,我可以执行此查询

select shop, SUM(amount) 
from sales
group by shop

shop | amount |
-----------+------------+
shop_1 | 5666 |
shop_2 | 4044 |
shop_3 4044 |

但我需要在专栏度过几天,我不知道他们是否可以帮助我做到这一点

       shop |    2012-08-1    |    2012-08-2   | 2012-08-3 |
-----------+------------+-----------+--------+-----------
shop_1 | 4005 | 5667 | 9987 |
shop_2 | 4333 | 4554 | 1234 |
shop_3 | 4555 | 6778 | 6677 |

将在行中按商店分组,在 postgresql 中按天在列中分组

最佳答案

首先,您必须安装tablefunc 扩展。从 9.1 版开始,您可以使用创建扩展来完成此操作:

CREATE EXTENSION tablefunc;

select * from crosstab (
select shop, date, SUM(amount)
from sales
group by shop

'select date from sales order by 1')
AS ct(shop: text, '2012-08-1' text, '2012-08-2' text, '2012-08-3' text)

关于sql - Postgresql 将行转列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43544772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com