Oracle을 사용하여 하위 쿼리 외부의 열을 어떻게 참조 할 수 있습니까? 하위 쿼리의 WHERE 문에서이를 사용해야합니다.하위 쿼리 (Oracle)의 상위 쿼리 열 참조
SELECT Item.ItemNo, Item.Group
FROM Item
LEFT OUTER JOIN (SELECT Attribute.Group, COUNT(1) CT
FROM Attribute
WHERE Attribute.ItemNo=12345) A ON A.Group = Item.Group
WHERE Item.ItemNo=12345
내가 서브 쿼리에 WHERE Attribute.ItemNo=Item.ItemNo
에 WHERE Attribute.ItemNo=12345
을 변경하려면,하지만이 가능한 경우 나는 알아낼 수 없습니다 :
편집 :
내가 원하는 : 나는 구조의이 종류를 필요로하는 이유
좋아, 이것이 "오류"레코드 (항목에 값이 누락 된 위치) 및 "확인"레코드 (항목에 값이있는 위치)의 수를 가져올 수 있어야합니다.
내가 바이올린에서 설정 한 방법은 올바른 데이터를 반환합니다. 나는 하위 쿼리 각각의 값을 채우기 만하는 것이 좋을 것 같아요. 아마도 이것이 가장 쉬운 방법 일 것이기 때문입니다. 미안 데이터 구조가 조금 복잡한 경우. 필요한 경우 설명 할 수 있습니다.
내 테이블은 다음과 같습니다
create table itemcountry(
itemno number,
country nchar(3),
imgroup varchar2(10),
imtariff varchar2(20),
exgroup varchar2(10),
extariff varchar2(20));
create table itemattribute(
attributeid varchar2(10),
tariffgroup varchar2(10),
tariffno varchar2(10));
create table icav(
itemno number,
attributeid varchar2(10),
value varchar2(10));
내 쿼리 지금까지입니다 :
select itemno, country, imgroup, imtariff, im.error "imerror", im.ok "imok", exgroup, extariff, ex.error "exerror", ex.ok "exok"
from itemcountry
left outer join (select sum(case when icav.itemno is null then 1 else 0 end) error, sum(case when icav.itemno is not null then 1 else 0 end) ok, tariffgroup, tariffno
from itemattribute ia
left outer join icav on ia.attributeid=icav.attributeid
where (icav.itemno=12345 or icav.itemno is null)
group by tariffgroup, tariffno) im on im.tariffgroup=imgroup and imtariff=im.tariffno
left outer join (select sum(case when icav.itemno is null then 1 else 0 end) error, sum(case when icav.itemno is not null then 1 else 0 end) ok, tariffgroup, tariffno
from itemattribute ia
left outer join icav on ia.attributeid=icav.attributeid
where (icav.itemno=12345 or icav.itemno is null)
group by tariffgroup, tariffno) ex on ex.tariffgroup=exgroup and extariff=ex.tariffno
where itemno=12345;
그것은 또한 SQL Fiddle에서 설정합니다.
당신은 선택할 수 없습니다. 무엇을 선택 하시겠습니까? 왼쪽 외부 조인 이외의 다른 솔루션이있을 수 있습니다. – hkutluay
sqlfiddle 참조 – tedski