구분자가없는 데이터를 구분자를 줘서 처리하고싶습니다. 0 5 430

by 봉구 [SQL Query] [2020.05.27 11:52:07]


위에 보시다 싶이 1~8 까지 그룹 a로 

나머지 또 1~6까지 그룹 b로 

나머지 1~4까지 그룹 c로 원래

없는 컬럼 구분자 컬럼을 추가하거나 구분자 값을 줘서 해당영역 그룹A컬럼, 그룹 B컬럼 이렇게

셀렉트를 하고싶습니다.

그냥 group by로는 처리가 잘 되지않아서 고수님들에게 조언을 듣고싶습니다.

바뀌는 부분이 sortnumb 데이터가 aaa라면  컬럼 데이터가 컬럼값 A 그룹 

bbb라면 컬럼값 b그룹 이렇게 데이터 처리를 하고싶습니다..

디비는 마리아 디비 입니다.

 

그림판으로 바르게 쓰지못해서 미관상 보기 좋지 못한점 죄송합니다.

 

by 버드나무 [2020.05.27 14:01:17]

혹시 이것???

WITH temp AS (
    SELECT 'aaa' AS sornumb
        ,    1 AS sorplaq
    FROM dual
    UNION ALL
    SELECT 'aaa'
        ,    2
    FROM dual
    UNION ALL
    SELECT 'aaa'
        ,    3
    FROM dual
    UNION ALL
    SELECT 'bbb'
        ,    1
    FROM dual
    UNION ALL
    SELECT 'bbb'
        ,    2 
    FROM dual
    UNION ALL
    SELECT 'bbb'
        ,    3 
    FROM dual
    UNION ALL
    SELECT 'bbb'
        ,    4 
    FROM dual
    UNION ALL
    SELECT 'ccc'
        ,    1 
    FROM dual
    UNION ALL
    SELECT 'ccc'
        ,    2 
    FROM dual
    UNION ALL
    SELECT 'ccc'
        ,    3 
    FROM dual
)
SELECT a.sornumb,sorplaq, b.sornumb, b.bnum, decode(bnum, 1, 'a그룹', 2, 'b그룹','c그룹') AS dcd1, decode(a.sornumb, b.sornumb, a.sornumb ||'그룹') AS dcd2
FROM temp a,
    (SELECT rownum AS bnum, SORNUMB
    from
    (SELECT DISTINCT sornumb FROM temp) b) b
WHERE a.SORNUMB = b.SORNUMB


 


by 마농 [2020.05.27 14:23:17]

sornumb 항목별 그룹핑을 원하시나요?
1. 그냥 sornumb 항목을 이용해도 되지 않나요?
2. A, B, C 이어야 하나요? 1, 2, 3 으로 해도 될텐데?
3. A, B, C 로 정하는 기준은 뭔가요? 정렬 순서대로 인가요? 정렬 기준은?
sornumb 기준 정렬이라면? DESC 정렬인가요?


by 봉구 [2020.05.27 14:37:10]

a,b,c,는 제가 임으로 정한거라서 1,2,3으로 해도 됩니다 어떻게 해야 할지 감이 안잡혀서 질문하게됐습니다.

감사합니다 버드나무님 해보겠습니다.


by 마농 [2020.05.27 14:56:03]

1. 그냥 sornumb 를 구룹명으로 해도 됩니다.
2. 굳이 다른 이름을 원한다면? DENSE_RANK() OVER(ORDER BY sornumb) 로 해보세요. 1, 2, 3
3. A, B ,C 를 원한다면? CHAR(DENSE_RANK() OVER(ORDER BY sornumb) + 64)


by 봉구 [2020.05.27 15:12:31]

정말 감사합니다 몰랐던 것들을 알게됐습니다 

 

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