2017-07-09 56 views
0

最大日我有一個像如何獲得每月

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每月最大日期,即最大五月和最大四月等,以獲得備案表

好的,我將排序表循環和每個新的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 

以下行,我想選擇每個月的最後一天也就是我想要的選擇給我帶來以下行

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行?

感謝 埃利亞斯

+2

你到目前爲止嘗試過什麼? – vwegert

+0

你是指任何月份的最後一天?新的kunnr's將不會在您的表格中... –

+0

您能否爲示例添加預期結果? –

回答

4

爲什麼不直接在從數據庫中選擇使用聚合函數?循環內部表的效率更高。

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。

+0

非常感謝Suncatcher。只有2件事。首先,我想通過bukrs,kunnr,date來獲得MAX,如果有多於一行的話,我們將用MAX posnr來取1。我明白,然後我會循環到內部的表格,並拿走剩餘的字段。非常感謝ELIAS – ekekakos

+0

無需循環itab,查看更新的SELECT。 – Suncatcher