자전거 K_200 K_400 K_600 K_800 K_800_OVER
K01 80 70 65 54 30
K02 90 80 55 44 32
자전거 K02 주행거리 358
결과 값 80
자전거 K02 주행거리 150
결과 값 90
select case when :distance <= 200 then K_200
when :distance <= 400 then K_400
when :distance <= 600 then K_600
when :distance <= 800 then K_800
else K_800_OVER
end as result
from 테이블
where 자전거 = 'K02';
WITH TABLE_A AS (
SELECT 'K01' AS 자전거, 80 AS K_200, 70 AS K_400, 65 AS K_600, 54 AS K_800, 30 AS K_800_OVER FROM DUAL UNION ALL
SELECT 'K02' AS 자전거, 90 AS K_200, 80 AS K_400, 55 AS K_600, 44 AS K_800, 32 AS K_800_OVER FROM DUAL
)
, TABLE_B AS (
SELECT 'K02' AS 자전거, 358 AS K FROM DUAL UNION ALL
SELECT 'K02' AS 자전거, 150 AS K FROM DUAL
)
SELECT
A.자전거
,CASE WHEN B.K < 200 THEN A.K_200
WHEN B.K < 400 THEN A.K_400
WHEN B.K < 600 THEN A.K_600
WHEN B.K < 800 THEN A.K_800
ELSE A.K_800_OVER
END AS K
FROM TABLE_A A
INNER JOIN TABLE_B B
ON A.자전거 = B.자전거
원하시는 방식이 맞는지 모르겠네요.
테이블 설계가 좀 바뀌어야할것 같네요.
그냥 하드코딩으로 SQL 뽑아야 됩니다.
변경할수있는 모델을 만들어 쓰셔야할듯합니다.