Forum Discussion

QuantusPools's avatar
QuantusPools
Frequent Visitor
2 years ago
Solved

Calculated Column - New / Lost / Existing Customer

 

VAR CurrentYear = YEAR(TODAY())
VAR LastYear = CurrentYear - 1
VAR CurrentYearSales = CALCULATE(SUM(Sales[Subtotal]), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear))
VAR LastYearSales = CALCULATE(SUM(Sales[Subtotal]), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear))
RETURN
    IF(
        CurrentYearSales > 0 && LastYearSales > 0,
        "Current",
        IF(
            CurrentYearSales > 0 && LastYearSales = 0,
            "New",
            IF(
                CurrentYearSales = 0 && LastYearSales > 0,
                "Lost",
                ""
            )
        )
    )

 

 

Customer NameCompletion DateSubtotalCustomer Status

Customer 1

1/13/2022$55.00

Current

Customer 15/5/2023$780.00Current
Customer 15/9/2022$654.60Current
Customer 25/12/2022$247.15Lost
Customer 25/20/2022$204.72Lost
Customer 25/26/2022$0.00Lost
Customer 35/23/2023$153.00New
Customer 35/26/2023$153.00New
Customer 36/13/2023$0.00New

 

I'm wanting to use a calculated column so I can use it as a filter.

 

I want the output to be

 

Current customer - Sales last year AND this year

New Customer - Sales ONLY this year

Lost Customer - Sales ONLY last year

 

 

I added the "Customer Status" column to my sample data as that is what I want my output to be.  The current posted formula only outputs "Current" customer.  Not sure why that is happening.  Any help?

  • I figured it out (well chatGPT did 😂).  Just had to ask a more detailed question.

    Customer Status =
    VAR CurrentYear = YEAR(TODAY())
    VAR LastYear = CurrentYear - 1
    VAR CustomerID = [Customer ID]  // Replace [Customer ID] with your actual customer identifier column name
    
    RETURN
        IF(
            CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear), Sales[Customer ID] = CustomerID) > 0 &&
            CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear), Sales[Customer ID] = CustomerID) > 0,
            "Current",
            IF(
                CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear), Sales[Customer ID] = CustomerID) > 0 &&
                CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear), Sales[Customer ID] = CustomerID) = 0,
                "New",
                IF(
                    CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear), Sales[Customer ID] = CustomerID) = 0 &&
                    CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear), Sales[Customer ID] = CustomerID) > 0,
                    "Lost",
                    ""
                )
            )
        )

     

     

2 Replies

  • QuantusPools's avatar
    QuantusPools
    Frequent Visitor

    I figured it out (well chatGPT did 😂).  Just had to ask a more detailed question.

    Customer Status =
    VAR CurrentYear = YEAR(TODAY())
    VAR LastYear = CurrentYear - 1
    VAR CustomerID = [Customer ID]  // Replace [Customer ID] with your actual customer identifier column name
    
    RETURN
        IF(
            CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear), Sales[Customer ID] = CustomerID) > 0 &&
            CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear), Sales[Customer ID] = CustomerID) > 0,
            "Current",
            IF(
                CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear), Sales[Customer ID] = CustomerID) > 0 &&
                CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear), Sales[Customer ID] = CustomerID) = 0,
                "New",
                IF(
                    CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear), Sales[Customer ID] = CustomerID) = 0 &&
                    CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear), Sales[Customer ID] = CustomerID) > 0,
                    "Lost",
                    ""
                )
            )
        )