Merhaba,
CASE bloğu içerisinden en az 1 nümerik tip dönüyorsa, tüm CASE sonucu nümerik tipte dönecektir. Bu sebeple CASE içerisindeki tüm nümerik tiplerin VARCHAR tipine dönüştürülmesi gerekiyor.
CASE içerisinde yer alan tüm BRANCH kolonlarını kısaca LTRIM() içerisine alarak VARCHAR tipine dönüştürmek sorunu çözebilir.
SELECT
CASE
WHEN P.MODULENR = 4 THEN (SELECT CASE INV.BRANCH WHEN 2901 THEN 'TEST1' WHEN 2902 THEN 'TEST2' ELSE '' END FROM LG_044_01_INVOICE INV WHERE INV.LOGICALREF = P.FICHEREF)
WHEN P.MODULENR = 7 THEN (SELECT LTRIM(BNF.BRANCH) FROM LG_044_01_BNFLINE BNF WHERE BNF.LOGICALREF = P.FICHEREF)
WHEN P.MODULENR = 10 THEN (SELECT LTRIM(KSL.BRANCH) FROM LG_044_01_KSLINES KSL WHERE KSL.LOGICALREF = P.FICHEREF)
WHEN P.MODULENR = 6 THEN (SELECT LTRIM(CSR.BRANCH) FROM LG_044_01_CSROLL CSR WHERE CSR.LOGICALREF = P.FICHEREF)
WHEN P.MODULENR IN (5, 61, 62) THEN (SELECT LTRIM(CLF.BRANCH) FROM LG_044_01_CLFLINE CLF WHERE CLF.LOGICALREF = P.FICHEREF)
ELSE ''
END AS ISYERI,Örnek 1: SELECT
CASE
WHEN T.X = 1 THEN 'TEST'
WHEN T.X = 2 THEN T.X
END AS Y
FROM
(SELECT 1 AS X UNION ALL SELECT 2 AS X) TConversion failed when converting the varchar value 'TEST' to data type int. Örnek 2: SELECT
CASE
WHEN T.X = 2 THEN T.X
WHEN T.X = 1 THEN 'TEST'
END AS Y
FROM
(SELECT 1 AS X UNION ALL SELECT 2 AS X) TConversion failed when converting the varchar value 'TEST' to data type int. Örnek 3: SELECT
CASE
WHEN T.X = 1 THEN 'TEST'
WHEN T.X = 2 THEN LTRIM(T.X)
END AS Y
FROM
(SELECT 1 AS X UNION ALL SELECT 2 AS X) THata dönmedi