2017-02-09 7 views
0

:THEN 출력 CASE 문에 변수를 추가 내가 임팔라에 다음 코드가있는 경우

(CASE 
    WHEN a3.shipped_qty1 > a4.shipped_qty2 AND a1.min1 < a2.min2 THEN "KEEP" 
    WHEN a3.shipped_qty1 < a4.shipped_qty2 AND a1.min1 < a2.min2 THEN "MOVE" 
    WHEN a3.shipped_qty1 > a4.shipped_qty2 AND a1.min1 > a2.min2 THEN "MOVE" 
    WHEN a3.shipped_qty1 < a4.shipped_qty2 AND a1.min1 > a2.min2 THEN "KEEP" 
    ELSE "NOT SHIPPING" 
END) AS move 

을 나는 다음과 같은 결과물을 출력 할 것 대신 텍스트를 원하는 :

(CASE 
    WHEN a3.shipped_qty1 > a4.shipped_qty2 AND a1.min1 < a2.min2 THEN "KEEP" 
    WHEN a3.shipped_qty1 < a4.shipped_qty2 AND a1.min1 < a2.min2 THEN "MOVE TO **a3.supplier**" 
    WHEN a3.shipped_qty1 > a4.shipped_qty2 AND a1.min1 > a2.min2 THEN "MOVE TO **a4.supplier**" 
    WHEN a3.shipped_qty1 < a4.shipped_qty2 AND a1.min1 > a2.min2 THEN "KEEP" 
    ELSE "NOT SHIPPING" 
END) AS move 

어떻게 할 코드?

답변

1

당신은 출력 문자열 구축 CONCAT()를 사용할 수 있습니다

(CASE 
    WHEN a3.shipped_qty1 > a4.shipped_qty2 AND a1.min1 < a2.min2 THEN "KEEP" 
    WHEN a3.shipped_qty1 < a4.shipped_qty2 AND a1.min1 < a2.min2 THEN concat("MOVE TO **",coalesce(a3.supplier,''),"**") 
    WHEN a3.shipped_qty1 > a4.shipped_qty2 AND a1.min1 > a2.min2 THEN concat("MOVE TO **",coalesce(a4.supplier,''),"**") 
    WHEN a3.shipped_qty1 < a4.shipped_qty2 AND a1.min1 > a2.min2 THEN "KEEP" 
    ELSE "NOT SHIPPING" 
END) AS move 

P.S.을 또한 해당 열이 null 일 수 있는지 여부를 알 수 없으므로 COALESCE()에 공급자 값을 래핑했습니다. 그렇지 않으면 해당 값이 null 인 경우 쿼리가 실패합니다.

+0

concat ... 왜 그렇게 생각하지 않았습니까? 그게 내가 생각했던 것보다 쉽다. :) 고마워요! –