IN: from Tableau to SQL

Tests membership in a list; a null left operand returns false in this profile. Below, 8 sample rows go through the calculation and through the SQL, and both return the same numbers.

Calculated field

[label] IN ('ash', 'pine/south')

Sample data

labelquantityamountflag
cedar cedar 6512.8True
ORCHID-west66-7.6False
maple-east670null
willow north6825.3True
birch-birch694.9False
pine/south70-1.2null
ash719True
nullnullnullnull

The same calculation as SQL

SELECT coalesce(label IN ('ash','pine/south'),false) AS result FROM input

Runs the example above.

Result

result
False
False
False
False
False
True
True
False

Same rows from the calculation and from the SQL in DuckDB.

Where a naive translation goes wrong

  • Replacing IN with label IN ('ash','pine/south') changes the shown values or null handling.

    Naive SQL

    SELECT label IN ('ash','pine/south') AS result FROM input
    result
    False
    False
    False
    False
    False
    True
    True
    null

    Matches the calculation

    SELECT coalesce(label IN ('ash','pine/south'),false) AS result FROM input
    result
    False
    False
    False
    False
    False
    True
    True
    False

Signature

IN(expression, member, ...)