안녕하세요. 각 그룹항목당 데이터가 각 1개 행만 나오게 쿼리를 짜려면 어떻게 해야하나요?
아래와 같은 쿼리가 잇습니다. name이란 항목이 잇는데 이 네임에 해당하는 항목이 꼭 1개행만 나오게 해야합니다. 아래 데이터는 name의 값이 3가지가 있는데 각 그룹당 데이터가 아무행이라도 괜찮으니 1개행만 나오게 할수 있나요? 답변부탁드립니다.
with a as (select '1' name ,'11row' data from dual
union all
select '1' name ,'12row' data from dual
union all
select '2' name ,'21row' data from dual
union all
select '2' name ,'22row' data from dual
union all
select '3' name ,'31row' data from dual
union all
select '3' name ,'32row' data from dual
)
select * from a
with a as ( select '1' name ,'11row' data from dual union all select '1' name ,'12row' data from dual union all select '2' name ,'21row' data from dual union all select '2' name ,'22row' data from dual union all select '3' name ,'31row' data from dual union all select '3' name ,'32row' data from dual ) -- ROW_NUMBER() OVER() 이용 SELECT * FROM (SELECT name , data , ROW_NUMBER() OVER(PARTITION BY NAME ORDER BY DATA DESC ) RN FROM a ) WHERE RN = 1 -- MAX / MIN 함수 이용 SELECT NAME , MAX(DATA) DATA FROM a GROUP BY NAME