• I don't understand how it could work with huge amount of data because the solution uses CHECKSUM function which is not reliable.

    Example:

    select binary_checksum('51;52;56;2204;') produces 1726190947

    select binary_checksum('51;53;56;2205;') produces 1726190947

    select binary_checksum('51;52;56;2205;') produces 1726190963

    select binary_checksum('51;53;56;2204;') produces 1726190963

    As you can see different input strings produces the same output.

    Those cases are not so rare if if have to work with millions of records.

    In general, we are using similar approach to load data to our DW but we had to write custom script component for comparing.