• You were correct - it did sort incorrectly. I made my dates YYYYMMDD using this code:

    WHEN 'due_date' THEN LTRIM(STR(DATEPART(yyyy,a.due_date))) +
    
    RIGHT('00'+LTRIM(STR(DATEPART(mm,a.due_date))),2) +
    RIGHT('00'+LTRIM(STR(DATEPART(dd,a.due_date))),2)

    Everything looks like it is working fine now including date sorting. Excellent way to contruct some dynamic clauses without dynamic SQL!