Forum Discussion

don_writer's avatar
don_writer
Helper II
7 years ago
Solved

Compare different values in different rows

Hi, I am trying to compare values from one row to values in other rows to determine if all the criteria is present. Here is a sample of my table:   Rel OT ObjectID RO RelatedID 003 S 0...
  • HotChilli's avatar
    7 years ago

    If the sample provided is Table1, you could create a 2nd table

    Table2 = SELECTCOLUMNS(FILTER(Table1, Table1[RO] = "P"), "ObjectID", Table1[ObjectID], "RO", Table1[RO])

    You could do a DISTINCTCOUNT on ObjectID in Table2 to look for ObjectID with more than 1 P

     

    Then add a calculated column to Table1

    Is Matching P = 
    VAR _PtoFind =
        LOOKUPVALUE (
            'Table2'[ObjectID], 
            'Table2'[ObjectID], Table1[ObjectID]
        )
    RETURN
     IF (Table1[RO] = "P", "Skip",
     IF (_PtoFind <> BLANK (), "Y", "N" ) )

    This should return N if there is an O record without a matching P.

    Note: The calculated column will error if there are more than 1 P records in Table2 for a specific ObjectID

  • don_writer's avatar
    don_writer
    7 years ago

    I'll be damned, I thought the fourth parameter was a alternate result if the output was blank. Thanks for this.

     

    Here is the final code for anyone looking for this kind of thing.

    Matching P = 
        VAR varPtoFind = 
            LOOKUPVALUE( srcJRChief[ObjectID], srcJRChief[ObjectID], srcJRChief[ObjectID], srcJRChief[RO],"P")
        RETURN
            IF(srcJRChief[RO]="P","Skip",
            IF(varPtoFind<>BLANK(),"Y","N"))