안녕하세요. 뉴비 코더입니다 ㅠ
개발도중 필요에 의해 쿼리가 아래와 같이 나왔습니다.
IF (@res_day=30, (SELECT pi_30 FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1),
IF (@res_day = 45, (SELECT pi_45 FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1),
IF (@res_day = 60, (SELECT pi_60 FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1),
IF (@res_day = 90, (SELECT pi_90 FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1),
IF (@res_day = 120, (SELECT pi_120 FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1),
IF (@res_day = 150, (SELECT pi_150 FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1),
IF (@res_day = 180, (SELECT pi_180 FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1),
IF (@res_day = 210, (SELECT pi_210 FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1),
IF (@res_day = 240, (SELECT pi_240 FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1),
IF (@res_day = 270, (SELECT pi_270 FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1),
IF (@res_day = 300, (SELECT pi_300 FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1),
IF (@res_day = 330, (SELECT pi_330 FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1),
IF (@res_day = 365, (SELECT pi_365 FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1),"")
)
)
)
)
)
)
)
)
)
)
)
)
정말 가독성도 매우 떨어지고 얼핏 효율성도 떨어질것같은 느낌입니다.(뉴비라 실제 효율성이 떨어지는지 확인 까지는..ㅠ)
그래서 위와 같은 코드를 아래와 같은 코드처럼 효율성있게 만들고 싶은데, 제가 생각하는 것처럼 되지는 않네요 ^^;
SET @res_day = 'pi_30';
SELECT @res_day FROM product_insurance_client WHERE app_idx = app.app_idx AND pi_age = @age LIMIT 1
일차적으로 api를 찾아 보았지만 저렇게 쓰면 그냥 단순히 '문자열'로 읽히고 마는 것 같아요.. 저부분을 단순 문자열로 반환하는게 아니라,
컬럼처럼 인식하여, 해당 컬럼의 데이터를 추출할 수 있는 방법이 없을까요? |