Sql 带条件的数据透视表
例如,我有一张桌子Sql 带条件的数据透视表,sql,date,datetime,window,Sql,Date,Datetime,Window,例如,我有一张桌子 day id event 1999-01-01 1 buy 1999-01-05 2 return 2000-01-10 3 buy 2000-05-12 1 return 我需要创建一个如下所示的表: month count_buy count_return_from_last_year 1999 2 2000 1 1 我想这可以通过窗
day id event
1999-01-01 1 buy
1999-01-05 2 return
2000-01-10 3 buy
2000-05-12 1 return
我需要创建一个如下所示的表:
month count_buy count_return_from_last_year
1999 2
2000 1 1
我想这可以通过窗口函数+自连接来解决,这应该可以做到:
计为
选择
截至年月日,
count*过滤器,其中事件='buy'作为count\u buy,
count*过滤器,其中事件='return'作为count\u return
从数据
按1分组
选择
月
你买什么,
每月退回订单的数量与上月退回的数量相同
从计数
按月订购;
但是请注意,要使滞后始终为前一个月,您需要对每个月进行计数。如果数据中存在漏洞,则滞后将选择上一个可用月份。为了解决这个问题,您首先必须参加一系列的月份活动:
计为
选择
将“yyy-MM”作为月份,
count*过滤器,其中事件='buy'作为count\u buy,
count*过滤器,其中事件='return'作为count\u return
从生成_系列‘1999-01-01’::日期,‘1999-12-01’::日期,‘1个月’作为月份
日期为“月”的左连接数据,日期=月
按1分组
选择
月
你买什么,
每月退回订单的数量与上月退回的数量相同
从计数
按月订购;