Oracle/Mysql/Sql

Group by 알파벳 순으로 정렬 후 최종 1개만

gilnet 2011. 10. 6. 09:24
d dbid cid 
ahn 116421 Aggie 
ahn 116432 Annes 
ahn 116443 Aqeee 
akxkf 118461 강11 
akxkf 118462 강22 
akxkf 118463 강44 
akxkf 118464 강55 

이 데이터 에서 
같은 id중에서 cid를 알파벳 순으로 정렬 
시킨 후 가장 위에 것만 가져 오는 쿼리

WITH TEMP AS 

SELECT 'ahn' AS ID, '116421' AS DBID, 'Aggide' AS CID FROM DUAL UNION ALL 
SELECT 'ahn' AS ID, '116432' AS DBID, 'Annes' AS CID FROM DUAL UNION ALL 
SELECT 'ahn' AS ID, '116443' AS DBID, 'Aqeee' AS CID FROM DUAL UNION ALL 
SELECT 'akxkf' AS ID, '118461' AS DBID, '강11' AS CID FROM DUAL UNION ALL 
SELECT 'akxkf' AS ID, '118462' AS DBID, '강22' AS CID FROM DUAL UNION ALL 
SELECT 'akxkf' AS ID, '118463' AS DBID, '강44' AS CID FROM DUAL UNION ALL 
SELECT 'akxkf' AS ID, '118464' AS DBID, '강55' AS CID FROM DUAL 

SELECT * 
FROM ( 
SELECT ROW_NUMBER() OVER(PARTITION BY ID ORDER BY CID) AS CHK 
, ID 
, DBID 
, CID 
FROM TEMP 
) A 
WHERE A.CHK = 1