Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago
Solved

RANKING ORDERS BY CUSTOMER

Hi everyone,

 

I have a classical customers and sales table.

 

I would like to know in my sales tables (in a calculated column) for each customers which order is the first, which order is the second, the third ect...

 

This means I want to rank my orders/customers from the oldest to the most recent.

 

order_idcustomer_idorder_rank
32211001
32211001
45521002
44781003
15522511
15522511
62212512
75513501
75513501
85503502
85513503
91203504
91203504

It's a little bit hard for me to explain in english what i need but i hope its okay this way.

 

Thanks a lot for your help,

Regards

  • Hi.  I'm not clear how you know what the most recent order is.  Is it based on the order_id as a number, or is there an order table with a date on it?

     

    This just uses the order_id

    calc_order_rank =
    RANKX(
    CALCULATETABLE('Table', ALLEXCEPT('Table', 'Table'[customer_id])),
    'Table'[order_id],
    , ASC, Dense
    )
     
    If you have an order date in a Orders table you'd swap 'Table'[order_id] for RELATED(Orders[order_date])

3 Replies

  • Hi.  I'm not clear how you know what the most recent order is.  Is it based on the order_id as a number, or is there an order table with a date on it?

     

    This just uses the order_id

    calc_order_rank =
    RANKX(
    CALCULATETABLE('Table', ALLEXCEPT('Table', 'Table'[customer_id])),
    'Table'[order_id],
    , ASC, Dense
    )
     
    If you have an order date in a Orders table you'd swap 'Table'[order_id] for RELATED(Orders[order_date])
  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi,

     

    Thank you for your replys, both solutions works perfectly.

     

    What if i want to rank my orders only for the year 2021 ? first order of 2021 ect..

     

    Regards,

    Paul