如何获得每月的最大日期

时间:2017-07-09 21:40:27

标签: max sap abap opensql

我有一张像

这样的表格
kunnr        date            posnr
30001        28/5/2017       1
30001        25/5/2017       2
30001        15/5/2017       3
30001        25/4/2017       4
30001        20/4/2017       5
30002        15/5/2017       6
30002        25/4/2017       7

我希望每个新的kunnr能够获得每月最大日期的记录,即5月的最大值和4月的最大值等。

好的,我会对它的表循环和每个新的kunnr进行排序....我将如何获得每个月的最大日期记录?

提前致谢 利亚

PS:我错了,我意识到我得不到我想要的东西。我在表格中有以下几行

0000527746  1000    10.06.2017  20170718100757.5010080
0000527746  1000    10.06.2017  20170718100757.5039300
0000527746  1000    11.06.2017  20170718100839.9209480
0000527746  1000    11.06.2017  20170718100906.3337170
0000527746  1000    24.07.2017  20170718095843.3555610
0000527746  1000    24.07.2017  20170718100209.2203570
0000527746  1000    24.07.2017  20170718100757.4970390

我想选择每个月的最后一个日期,即我希望select给我带来以下几行

0000527746  1000    11.06.2017  20170718100906.3337170
0000527746  1000    24.07.2017  20170718100757.4970390

我使用以下sql

select bukrs kunnr dat max( time ) as time
    from zcollectoraction into corresponding fields of table it_collectoraction
    where bukrs = p_bukrs and
          kunnr in so_kunnr and
          dat   in so_date
    group by bukrs kunnr dat.

但它显示以下行

0000527746  1000    11.06.2017  20170718100906.3337170
0000527746  1000    11.06.2017  20170718100906.3337170
0000527746  1000    24.07.2017  20170718100757.4970390

如何处理每月1行?

由于 利亚

1 个答案:

答案 0 :(得分:4)

为什么不在从DB中选择时使用聚合函数?循环内部表更有效。

SELECT k~bukrs_vf, k~kunnr, k~erdat, MAX( p~posnr ) AS T
  FROM vbak AS k
  JOIN vbap AS p
    ON k~vbeln = p~vbeln
  INTO TABLE @DATA(lt_result)
 GROUP BY bukrs_vf, kunnr, k~erdat
 ORDER BY bukrs_vf.

注意,上述查询将仅选择那些在vbap中具有相应位置的kunnrs。