CASE WHEN P.MODULENR=4 THEN (SELECT BRANCH FROM LG_044_01_INVOICE (nolock) WHERE LG_044_01_INVOICE.LOGICALREF=P.FICHEREF) WHEN P.MODULENR=7 THEN (SELECT BRANCH FROM LG_044_01_BNFLINE (nolock) WHERE LG_044_01_BNFLINE.LOGICALREF=P.FICHEREF) WHEN P.MODULENR=10 THEN (SELECT BRANCH FROM LG_044_01_KSLINES (nolock) WHERE LG_044_01_KSLINES.LOGICALREF=P.FICHEREF) WHEN P.MODULENR=6 THEN (SELECT BRANCH FROM LG_044_01_CSROLL CSR (nolock) WHERE CSR.CARDREF=P.CARDREF AND P.FICHEREF=CSR.LOGICALREF) WHEN P.MODULENR IN (5,61,62) THEN (SELECT BRANCH FROM LG_044_01_CLFLINE (nolock) WHERE LG_044_01_CLFLINE.LOGICALREF=P.FICHEREF) ELSE '' END AS ISYERI,yukarıdaki sorguda BRANCH sütunlarından smallint değerler dönüyor (2901,2902 gibi). Ben bu değerlere string ifade tanımlamak istiyorum ilk satır için sorguyu şu şekilde değiştirmek istediğimde;
WHEN P.MODULENR=4 THEN (SELECT CASE BRANCH WHEN 2901 THEN 'TEST1' WHEN 2902 THEN 'TEST2' ELSE '' END FROM LG_044_01_INVOICE (nolock) WHERE LG_044_01_INVOICE.LOGICALREF=P.FICHEREF)Conversion failed when converting the varchar value 'TEST2' to data type smallint.
hatası alıyorum. Çözümü var mıdır?