SQL查询,输出分组为"不变性"

时间:2016-03-11 08:59:06

标签: sql oracle

我想创建SQL查询,输出将是按"不变性"分组的数据行。

我的意思是这样的记录:

enter image description here

**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

应转换为此视图:

enter image description here

**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语法。

1 个答案:

答案 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