거래처아이디로 그룹하고 싶은데 도저히 방법이 안떠오릅니다.. 0 4 632

by dkfldkfl [Oracle 기초] [2018.10.02 10:30:17]


SID (거래처 아이디)

MID (원자재 아이디)

 

원자재 아이디는 거래처 아이디에 종속적입니다

SID1  MID1

SID1  MID2

SID1  MID3

SID2  MID4

SID2  MID5

SID3  MID6

SID3  MID7

 

이런식으로 데이터가 저장돼있습니다

이때 데이터를 SID 로 그룹해서 SID1 : MID1, MID2, MID3     //  SID2 : MID4, MID5   // SID3 : MID6,MID7

 

이렇게 분류 하고 싶습니다

그런데 SID로 그룹바이 하면 안되고,,

 

혹시 아시는분 계신가요

 

제 생각에 이건 프로시져 느낌으로 일단 SID 를 그룹바이 하고 해당 SID 각각에 대해서 MID를 찾는 방식으로 해야할것같습니다

by 우리집아찌 [2018.10.02 10:55:24]

질문이 모호하네요.

원본 데이터와 원하는 데이터를 올려주세요.


by 야신 [2018.10.02 15:14:25]

Select sid, listagg(mid,',') within group ( order by mid) mid_lis

From 테이블

group by sid

 

이런것을 원하시는건가요?


by 봄빛 [2018.10.02 17:30:15]

 

 

DB는 postgreSql에서 실행했습니다

  원한는결과가 맞는건가요?

with SIDMID (SID,MID) as (
 SELECT 'SID1',  'MID1'  UNION ALL
 SELECT 'SID1',  'MID2'  UNION ALL
 SELECT 'SID1',  'MID3'  UNION ALL
 SELECT 'SID2',  'MID4'  UNION ALL
 SELECT 'SID2',  'MID5'  UNION ALL
 SELECT 'SID3',  'MID6'  UNION ALL
 SELECT 'SID3',  'MID7' 
)

SELECT sid, string_agg(mid,',') FROM SIDMID
GROUP BY SID
ORDER BY 1
;



--결과 :


SID         |      MID


SID1          MID1,MID2,MID3
SID2          MID4,MID5
SID3          MID6,MID7

 


by 허장군 [2018.10.05 11:30:13]

  SELECT SID, LISTAGG (MID, ',') WITHIN GROUP (ORDER BY MID) MID_LIS
    FROM (SELECT 'SID1' AS SID, 'MID1' AS MID FROM DUAL
          UNION ALL
          SELECT 'SID1' AS SID, 'MID2' AS MID FROM DUAL
          UNION ALL
          SELECT 'SID1' AS SID, 'MID3' AS MID FROM DUAL
          UNION ALL
          SELECT 'SID2' AS SID, 'MID4' AS MID FROM DUAL
          UNION ALL
          SELECT 'SID2' AS SID, 'MID5' AS MID FROM DUAL
          UNION ALL
          SELECT 'SID3' AS SID, 'MID6' AS MID FROM DUAL
          UNION ALL
          SELECT 'SID3' AS SID, 'MID7' AS MID FROM DUAL)
GROUP BY SID

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