How to 'group by' using variables in 4gl

前端 未结 2 692
感动是毒
感动是毒 2021-01-28 13:30

Is there a way to group records by a field within a table within a 4gl query?

My code.

  define variable v-invoice     as inte    no-undo.
define variabl         


        
相关标签:
2条回答
  • 2021-01-28 14:04

    Actually this is what the ACCUMULATE STATEMENT and the ACCUM function are meant for. I find the exact syntax for those somewhat hard to remember (and sometimes difficult to understand even after reading the online help), so I often resort to accumulating the variables myself like in Jensd's answer. The code for your example should look something like this (syntax-checked but not tested):

    FOR EACH order BREAK BY order.invoice:
    
        accumulate Order.sell-price (sub-total by order.invoice).
        accumulate Order.cost-price (sub-total by order.invoice).
    
        IF LAST-OF(order.invoice) THEN
    
            DISPLAY Order.invoice 
              accum sub-total by order.invoice Order.sell-price
              accum sub-total by order.invoice Order.cost-price.
    END.
    
    0 讨论(0)
  • 2021-01-28 14:12

    Yes, of course you can, very basic:

    DEFINE VARIABLE v-sell-price AS INTEGER NO-UNDO.
    DEFINE VARIABLE v-cost-price AS INTEGER NO-UNDO.
    
    FOR EACH order BREAK BY order.invoice:
    
        /* Sum the prices */
        ASSIGN 
            v-sell-price = v-sell-price + Order.sell-price.
            v-cost-price = v-cost-price + Order.cost-price. 
    
        /* On the last order matching this order display and reset sums */
        IF LAST-OF(order.invoice) THEN DO:
    
            DISPLAY Order.invoice v-sell-price v-cost-price.
            ASSIGN 
                v-sell-price = 0
                v-cost-price = 0.
        END.
    END.
    
    0 讨论(0)
提交回复
热议问题