-- case 문 쓰는거 나쁘지않은데요.. SELECT LV , CASE WHEN LV >= 1 THEN 'O' ELSE 'X' END "1" , CASE WHEN LV >= 2 THEN 'O' ELSE 'X' END "2" , CASE WHEN LV >= 3 THEN 'O' ELSE 'X' END "3" , CASE WHEN LV >= 4 THEN 'O' ELSE 'X' END "4" , CASE WHEN LV >= 5 THEN 'O' ELSE 'X' END "5" , CASE WHEN LV >= 6 THEN 'O' ELSE 'X' END "6" FROM ( SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 6 )
case 문을 뺏어요
WITH RS AS (
SELECT LEVEL LV
, '1' AS A1
, '2' AS A2
, '3' AS A3
, '4' AS A4
, '5' AS A5
, '6' AS A6
FROM DUAL CONNECT BY LEVEL <= 6
)
SELECT REPLACE(REGEXP_REPLACE(A1, '^[1-' || LV || ']$' , 'O'),'1','X') AS R1
,REPLACE(REGEXP_REPLACE(A2, '^[1-' || LV || ']$' , 'O'),'2','X') AS R2
,REPLACE(REGEXP_REPLACE(A3, '^[1-' || LV || ']$' , 'O'),'3','X') AS R3
,REPLACE(REGEXP_REPLACE(A4, '^[1-' || LV || ']$' , 'O'),'4','X') AS R4
,REPLACE(REGEXP_REPLACE(A5, '^[1-' || LV || ']$' , 'O'),'5','X') AS R5
,REPLACE(REGEXP_REPLACE(A6, '^[1-' || LV || ']$' , 'O'),'6','X') AS R6
FROM RS WHERE LV IN ('1','4','6')
나쁘지 않을걸 굳이 다르게 구현하고자 한다면?
방법이야 정말 무수하게 많겠죠..
나쁜 걸 개선하는 질문을 하셨으면 답변달기 수월한데
- 기존 방법의 비효율을 개선하는 방법을 제시하거나.
- 기존 방법 보다 간결한 구문을 제시하거나.
나쁘지 않을 걸 다르게 구현하는 질문에는 답변 달기가 참 어렵네요.
- 기존 방법에 비효율이 없으므로 개선할게 없는거죠.
- 기존 방법의 구문도 복잡하지 않고 간결하여 이해도 쉽죠.
여러가지 실험적인 형태의 시도가 있어야 하겠죠.
- 실험은 가능하나.. 기존 방법보다 나은점이 보이지 않으면 답변 달기 힘들어요.