SQL server Arithmetic Überlauf Fehler Konvertierung Ausdruck in datatyp datetime

Ich möchte meine Bestellung anpassen, wenn die Menge negativ ist, dann muss diese Zeile in der Faust sein, wenn die Menge positiv ist, werde ich sie von ExpDate sortieren

Meine Abfrage ist das.

Wählen Sie WhsCode, ItemCode, LotNumber, ExpDate, Qty von rq_Test2 Reihenfolge für Fall, wenn qty <0 dann Qty else ExpDate end

Aber ich bekomme einen Fehler von "Arithmetic Überlauf Fehler Konvertierung Ausdruck auf datatyp datetime." .. Warum?

Vielen Dank ..

Haben zwei Fälle Aussagen

Select WhsCode, ItemCode, LotNumber, ExpDate, Qty from rq_Test2 order by case when qty < 0 then Qty else null end , case when qty > 0 then ExpDate else NULL end 
 Select WhsCode,ItemCode,LotNumber,ExpDate,Qty from rq_Test2 order by case when qty < 0 then Qty else ExpDate end 

Hier im case Statement-Compiler wird versucht, Qty(numeric value) in Expdate(datetime)

Denn case statement konvertiert alle result_expression in den datatyp mit höchster Priorität in result_expression .

In deinem Fall hat Datetime höhere Priorität als numeric or int or Bigint etc.. So numeric or int or Bigint etc.. du diesen Fehler.

SQL server verwendet die folgende precedence für datatypen:

 user-defined data types (highest) sql_varian t xml datetimeoffset datetime2 datetime smalldatetime date time float real decimal money smallmoney bigint int smallint tinyint bit ntext text image timestamp uniqueidentifier nvarchar (including nvarchar(max) ) nchar varchar (including varchar(max) ) char varbinary (including varbinary(max) ) binary (lowest)