2016-12-16 1 views
-2

zu vermeiden, habe ich Tabelle A und Tabelle B mit den folgenden DatenWie multiplizierten Daten in Oracle SQL

A 
-- 
org location 
123 001 
123 002 
123 003 

B 
-- 
org sub_inv 
123 001_a 
123 002_a 
123 003_a 

i eine Abfrage Jetzt müssen schreiben die Ergebnisse wie

org, sub_inv, loc 
123 001_a 001 
123 002_a 002 
123 003_a 003 

Die unten zu bekommen Abfrage gibt die multiplizierten Daten. Bitte helfen Sie mir mit den Vorschlägen.

select 
from a,b 
where a.org=b.org 

Danke, Mamatha

+0

Es gibt keine beitreten auf 'org', die Ihnen die Ergebnisse, werden Sie wollen. Können Sie Ihr Problem näher erläutern? –

+0

Was ist dein Problem? Die Abfrage ist in Ordnung, Sie müssen nur die Spalten auflisten, die Sie auswählen möchten. – Kacper

+0

ist Ort immer 3 Zeichen und bezieht es sich immer auf die ersten 3 Zeichen von sub_inv? und was ist der Datentyp für den Standort? – xQbert

Antwort

0

Von dem, was es so aussieht ist das, was Sie suchen. Sie müssen mehr darüber ausarbeiten, was Sie fragen. Von Ihrer Frage haben Sie nur gefragt, wie Sie bei einem Join auswählen können.

+0

3 rec in A * 3 rec in B = 9 Datensätze auf org gewünschte Ergebnis ist 3. Das Problem, wie ich es sehe, ist eine fehlende Verbindung auf sub_inv zu loc auf einer Teilzeichenfolge von sub_inv. aber das nimmt ein paar Dinge von mir an. – xQbert

1

Wenn ich davon ausgehe Lage immer 3 Zeichen ist, und es bezieht sich immer auf die ersten drei Zeichen von sub_inv; Dann müssen Sie sich zusätzlich zu org einer Teilkette von sub_inv anschließen.

Ich gehe davon aus 3 Datensätze in A * 3 Datensätze in B wird Ihnen die 9 Einträge geben und Sie wollen nur 3. die einzige andere Korrelation Aufgrund der Ortscode versehen ist, gehe ich davon aus sub_inv enthält Lage

Ich bin kein Fan der Notation in einer from-Klausel, also habe ich sie ein bisschen neu geschrieben.

SELECT A.org, B.sub_inv, A.loc 
FROM A 
INNER JOIN B 
on A.Org = B.Org 
and cast(A.Location as varchar2(3)) = substr(sub_inv,1,3) 
1

sollte diese Arbeit:

select a.org 
     ,b.sub_inv 
     ,a.loc 
from a 
    join b on (a.org   = b.org 
       and a.location = substr(b.sub_inv,1,length(a.location)) 
       )