Jeremiah V. partage avec nous une règle universelle en informatique : quelque soit le langage utilisé, il existe toujours une autre façon plus longue de faire les choses. Pour les bases de données compatibles SQL-92, ce n’est pas évident d'avoir une clause ORDER BY générée dynamiquement, il existe cependant plusieurs façons de produire une implémentation raisonnable. Pour exemple, une recherche rapide sur Google propose l'utilisation combinée de CASE et CONVERT pour gérer le « ORDER BY » dynamique avec plusieurs types de colonnes.

Jeremiah a trouvé une solution bien plus longue à ce problème, pas de CASE et CONVERT mais une longueur de code bien plus importante... espérons juste qu'ils n'ajoutent pas de nouvelles colonnes :

IF @OrderByCriteria LIKE 'receipt_date, Account_Number, major_version, minor_version, Vendor_ID'       
        SELECT * FROM @Table_Input ORDER BY receipt_date, Account_Number, major_version, minor_version, Vendor_ID

ELSE IF @OrderByCriteria LIKE 'receipt_date, Account_Number, Vendor_ID, major_version, minor_version'       
        SELECT * FROM @Table_Input ORDER BY receipt_date, Account_Number, Vendor_ID, major_version, minor_version

ELSE IF @OrderByCriteria LIKE 'receipt_date, major_version, minor_version, Account_Number, Vendor_ID'   
        SELECT * FROM @Table_Input ORDER BY receipt_date, major_version, minor_version, Account_Number, Vendor_ID

ELSE IF @OrderByCriteria LIKE 'receipt_date, major_version, minor_version, Vendor_ID, Account_Number'   
        SELECT * FROM @Table_Input ORDER BY receipt_date, major_version, minor_version, Vendor_ID, Account_Number

ELSE IF @OrderByCriteria LIKE 'receipt_date, Vendor_ID, Account_Number, major_version, minor_version'       
        SELECT * FROM @Table_Input ORDER BY receipt_date, Vendor_ID, Account_Number, major_version, minor_version

ELSE IF @OrderByCriteria LIKE 'receipt_date, Vendor_ID, major_version, minor_version, Account_Number'       
        SELECT * FROM @Table_Input ORDER BY receipt_date, Vendor_ID, major_version, minor_version, Account_Number

ELSE IF @OrderByCriteria LIKE 'Account_Number, receipt_date, major_version, minor_version, Vendor_ID'       
        SELECT * FROM @Table_Input ORDER BY Account_Number, receipt_date, major_version, minor_version, Vendor_ID

ELSE IF @OrderByCriteria LIKE 'Account_Number, receipt_date, Vendor_ID, major_version, minor_version'       
        ... (et ainsi de suite)