고수님들 쿼리 이거 가능한가요? 0 3 2,029

by K-ART [SQL Query] [2023.01.03 09:03:57]


   자전거       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

 

 

 

    

 

by 신이만든지기 [2023.01.03 09:19:44]
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';

 


by 우주민 [2023.01.03 09:27:03]
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.자전거

원하시는 방식이 맞는지 모르겠네요.


by 우리집아찌 [2023.01.03 10:07:32]

테이블 설계가 좀 바뀌어야할것 같네요.

그냥 하드코딩으로 SQL 뽑아야 됩니다.

변경할수있는 모델을 만들어 쓰셔야할듯합니다. 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입