我正在尝试在PostgreSQL查询中为不同产品的单独开盘和收盘设置开盘价和开盘价,在此输入特定的日期范围,并且我的第一行的开盘价应以开始日期为准,而开盘价应为(开盘价+第一栏+第2列+第3列)。
***这是我的示例数据库
Date1 Product column1 column2 column3
01/01/2017 A 25 15 20
02/01/2017 C 10 20 20
03/01/2017 B 10 10 20
04/01/2017 C 10 10 20
05/01/2017 A 10 20 10
05/01/2017 C 5 10 20
06/01/2017 B 10 10 20
06/01/2017 A 10 10 20
06/01/2017 C 10 10 20
我在PostgreSQL中的预期查询*日期范围是2017年4月1日至2017年6月1日:
Date1 Product opening column1 column2 column3 closing
04/01/2017 C 50 10 10 20 90
05/01/2017 A 60 10 20 10 100
C 90 5 10 20 125
06/01/2017 A 100 10 10 20 140
B 40 10 10 20 80
C 125 10 10 20 165
答案 0 :(得分:0)
我有一个建议,但这是在SQL Server中,我不熟悉Postresql。 您可以通过任何适合u-
的循环或游标将日期范围作为@trans_date传递给它,从而运行以下查询SELECT日期1,产品,SUM(opening.opn_qty)作为AS开头,SUM(column1)作为AS列,SUM(column2)AS列,SUM(column3)作为AS列,3,SUM(closes.cls_qty)作为AS 来自sample_table1 左外连接 ( SELECT(SUM(column1)+ SUM(column2)+ SUM(column3))AS opn_qty, 产品 来自sample_table1 日期1 <@trans_date 按产品分组 日期1 )打开ON打开.Product = sample_table1.Product 左外连接 ( SELECT(SUM(column1)+ SUM(column2)+ SUM(column3))AS cls_qty, 产品 来自sample_table1 日期1 <= @trans_date 按产品分组 日期1 )在打开时关闭.Product = sample_table1.catalog_item_id 在哪里sample_table1.Date1 = @trans_date GROUP BY sample_table1.Product, 日期1 ORDER BY Date1 DESC;
可以在PostgreSQL中应用的类似逻辑。