我想创建SQL查询,输出将是按"不变性"分组的数据行。
我的意思是这样的记录:
**formatted text:**
AMNT FK_ORG PRICE DT1
623,34 1 2,2 01.08.2015
23,33 1 2,2 02.08.2015
223,64 1 2,2 03.08.2015
137,34 2 2,2 04.08.2015
3,7 1 2,2 05.08.2015
3,7 1 2,2 06.08.2015
3,8 1 2,4 07.08.2015
应转换为此视图:
**formatted text:**
FK_ORG PRICE AMNT DT1 DT2
1 2,2 870,31 01.08.2015 03.08.2015
2 2,2 137,34 04.08.2015 04.08.2015
1 2,2 7,4 05.08.2015 06.08.2015
1 2,4 3,8 07.08.2015 07.08.2015
字段" fk_org","价格", - 应确定此不变性。 Field" amnt"必须加总。
最好使用SQL的oracle语法。
答案 0 :(得分:1)
SELECT fk_org,
price,
SUM( amnt ) AS amnt,
MIN( dt1 ) AS dt1,
MAX( dt1 ) AS dt2
FROM (
SELECT t.*,
ROW_NUMBER() OVER ( ORDER BY dt1 )
- ROW_NUMBER() OVER ( PARTITION BY fk_org, price ORDER BY dt1 )
AS grp
FROM table_name
)
GROUP BY grp, fk_org, price
ORDER BY dt1;
<强>输出强>:
FK_ORG PRICE AMNT DT1 DT2
------ ----- ------ ------------------- -------------------
1 2.2 870.31 2015-08-01 00:00:00 2015-08-03 00:00:00
2 2.2 137.34 2015-08-04 00:00:00 2015-08-04 00:00:00
1 2.2 7.4 2015-08-05 00:00:00 2015-08-06 00:00:00
1 2.4 3.8 2015-08-07 00:00:00 2015-08-07 00:00:00