검색된 안녕과 낮음과 이렇게하는 방법을 찾을 수 없습니다. 나는 두 개의 기둥이있는 테이블을 가지고있다.카운트가 1 인 레코드 만 선택하십시오.
Order route
===== =====
Order_1 100
Order_1 101
Order_2 102
Order_3 103
Order_4 104
나는, 결과로 사전에
Order_2 102
Order_3 103
Order_4 104
감사합니다.
검색된 안녕과 낮음과 이렇게하는 방법을 찾을 수 없습니다. 나는 두 개의 기둥이있는 테이블을 가지고있다.카운트가 1 인 레코드 만 선택하십시오.
Order route
===== =====
Order_1 100
Order_1 101
Order_2 102
Order_3 103
Order_4 104
나는, 결과로 사전에
Order_2 102
Order_3 103
Order_4 104
감사합니다.
Order
은 예약 키워드이므로 대신 order_column
을 사용했습니다.
첫 번째 테스트 데이터 : 그리고 전통적으로
create table order_route_table(order_column varchar2(20)
, route number);
insert into order_route_table
select 'Order_1', 100 from dual
union all select 'Order_1', 101 from dual
union all select 'Order_2', 102 from dual
union all select 'Order_3', 103 from dual
union all select 'Order_4', 104 from dual;
: 분석과 함께
select order_column, min(route)
from order_route_table
group by order_column
having count(*) = 1;
: 어느 경우에
select order_column, route
from (select order_column
, route
, count(*) over (partition by order_column) as order_count
from order_route_table)
where order_count = 1;
결과 :
ORDER_COLUMN ROUTE
-------------------- ----------
Order_2 102
Order_3 103
Order_4 104
,
감사합니다. 실제로 이름순을 사용하지 않았습니다. 도움에 감사드립니다. – ValiRossi
이 경우 min 함수는 무엇을 수행합니까? – ValiRossi
'group by '칼럼을'select' 절에서 사용하는 것은 group by 그룹에 있거나 aggregate 함수 안에서 사용해야합니다. 'Group by '에 라우트를 원하지 않으면 Order_1 행이 별도의 그룹에 표시되고 표시됩니다. 따라서 '최소'는 해당 그룹의 최소 경로를 얻습니다. 각 그룹은'having count (*) = 1' 때문에 하나의 밑줄을 가지고있어서'min'이 우리에게 그 경로를줍니다. '맥스 (Max) '도 효과가있다. –
당신이 시도한 것을 보여주십시오. – NickLH
SQL? 기음#? 당신이 여기있는 후에 무엇을 말하기 힘든 종류 ... – kaveman
나쁜 형식에 대해 유감스럽게 생각해서, 나는 그것을 서둘러 내 타블렛에 입력했다. 고쳐 주셔서 감사합니다. ODP.NET을 사용하는 C# sql 문자열입니다. 섀넌의 대답은 훌륭했습니다. 대단히 감사합니다. 굉장 사이트. – ValiRossi