2016-06-02 4 views
-2

하위 선택 및 조인없이 lieferanten_nr (artikel의)을 (lieferanten의) 이름으로 대체하려면 어떻게해야합니까?Oracle SQL의 열 바꾸기

나는 lieferanten의 이름을 식별하고 artikel의 lieferanten_nr을 그 이름으로 대체해야합니다.

1.Table

select lieferanten_nr, name from lieferanten; 

enter image description here


select bezeichnung, lieferanten_nr from artikel; 

2.Table 대신 lieferanten_nr의 어떤의 인공 제한을 감안할 때 이름

+1

정확히 무엇을 의미합니까? – SSD

+0

에 몇 가지 예가 나와 있습니다. 값을 업데이트하는 것을 의미합니까 ?? – SSD

+0

'하위 선택 및 조인이없는 경우 '- 할 수 없습니다. 조인 또는 상관 된 하위 쿼리를 통해 어떤 식 으로든 두 테이블을 조인해야합니다. – MT0

답변

2

에게있을가 조인 또는 당신은 더의 제한은 다음 조인은 매우 간단하게 무시하면

SELECT bezeichnung, 
     name 
FROM (
    SELECT bezeichnung, 
     LEAD(name) IGNORE NULLS OVER (PARTITION BY lieferanten_nr 
              ORDER BY name NULLS FIRST) AS name 
    FROM (
    SELECT lieferanten_nr, 
      bezeichnung, 
      NULL AS name 
    FROM artikel 
    UNION ALL 
    SELECT lieferanten_nr, 
      NULL, 
      name 
    FROM lieferanten 
) 
) 
WHERE bezeichnung IS NOT NULL 
AND name  IS NOT NULL; 

: 하위 쿼리 이것은 내가 UNION를 사용하여 (더 하위 쿼리가 어떤 상관 관계 서브 쿼리를 의미 없다고 가정)받을 수있는 가장 가까운에 관한 것입니다 :

select a.bezeichnung, 
     l.name 
from artikel a 
     INNER JOIN 
     lieferanten l 
     ON (a.lieferanten_nr = l.lieferanten_nr); 
+0

내가 말했듯이, 상관 관계가없는 하위 쿼리를 허용하지 않는다는 견해를 취했다. 그렇지 않으면 모든 것을 허용하지 않고 질문에 대한 대답이 "불가능"으로 끝납니다. – MT0

+0

이 작업이 없습니다 –

+0

@HansBaum 어떻게 작동하지 않습니까? – MT0