2014-10-24 2 views
0

다음 SQL을 실행하고 있습니다. 나는 다음과 같은 같은 내 결과를 표시하기 위해 필요한이SQL을 사용하여 범위를 벗어남

17 

25 

35 

45 

같은 값을 반환

SELECT value FROM ppr_price_factor WHERE product_factor_id=3; 

.

value  value Range 
17  0-17 

25  18-25 

35  26-35 

45  36-45 

SQL을 사용하여 이것을 수행 할 수 있습니까?

답변

1

어쩌면 참고로 다음과 같은 SQL을 사용할 수 있습니다

SELECT value, 
     TO_CHAR(1 + LAG(value, 1, -1) OVER (ORDER by value)) || '-' || TO_CHAR(value) AS value_range 
    FROM your_table 
+0

덕분에,이게 정말 도움이됩니다. – Ihraz

0

각 문제에 대해 case 문을 사용합니다.

당신은 도움이

SELECT value 
    ,CASE 
     WHEN value >= 0 
      AND value <= 17 
      THEN '0-17' 
     WHEN value >= 18 
      AND value <= 25 
      THEN '18-25' 
     WHEN value >= 26 
      AND value <= 35 
      THEN '26-35' 
     WHEN value >= 36 
      AND value <= 45 
      THEN '36-45' 
     ELSE '46-' 
     END AS valueRange 
FROM table1 

sql fiddle link

+0

가 잠깐! 결과 레코드를 기반으로 동적으로 범위를 가져 오시겠습니까? – Logan

+0

예, 지연 기능을 사용하여 해결했습니다. 당신의 대답은 제가 다이나믹 레인지를 깨는 데 도움이됩니다. 다시 감사합니다 – Ihraz

0

사용이 :

SELECT value, 
     TO_CHAR(1 + LAG(value, 1, -1) OVER (ORDER by value)) || '-' || TO_CHAR(value) AS value_range 
    FROM your_table