2016-06-30 7 views
-2

mit 3 Tabellen gleiche Spalten, aber mit unterschiedlichen values..result sollten nur gleiche Kombination wäre gesetzt einETL - Abfrage benötigte

col x col y 
23  a01 
23  a02 
24  a11 
25  a12 

Tabelle b

Beispiel Tabelle im Ergebnis gedruckt werden

col x col y 
23  a10 
23  a02 
24  a11 
25  a12 

Tabelle C

col x col y 
23  a01 
23  a02 
24  a11 
25  a12 

wollen das Ergebnis als

col x col y 
24  a11 
25  a12 

helfen Sie uns bitte die Abfrage

+3

Willkommen bei Stack-Überlauf! [Was haben Sie versucht?] (Http://mattgemamm.com/what-have-you-tried/) – Pred

Antwort

1

Nicht vertraut mit ETL zu bekommen, aber wenn es einfach nur SQL ist sollte es so etwas wie dieses:

select a.* 
from a 
inner join b on a.x = b.x and a.y=b.y 
inner join c on a.x = c.x and a.y=c.y 
+0

ETL bedeutet "Extrahieren, Transformieren, Laden" und bezieht sich im Allgemeinen auf das Konvertieren von Daten von einem Format in ein anderes. Es ist keine spezielle Technologie. –

0

Sie kann den INTERSECT-Operator verwenden, wenn Sie identische Zeilen in verschiedenen Tabellen identifizieren möchten.

WITH CTE_T1 AS 
(
    SELECT [X] ,[Y] 
    FROM 
     (VALUES 
      (23, 'a01') 
     ,(23, 'a02') 
     ,(24, 'a11') 
     ,(25, 'a12') 
    ) T1([X],[Y]) 
), 
CTE_T2 AS 
(
    SELECT [X] ,[Y] 
    FROM 
     (VALUES 
      (23, 'a10') 
     ,(23, 'a20') 
     ,(24, 'a11') 
     ,(25, 'a12') 
    ) T2([X],[Y]) 
), 
CTE_T3 AS 
(
    SELECT [X] ,[Y] 
    FROM 
     (VALUES 
      (23, 'a40') 
     ,(23, 'a50') 
     ,(24, 'a11') 
     ,(25, 'a12') 
    ) T3([X],[Y]) 
) 
SELECT [X],[Y] FROM CTE_T1 
INTERSECT 
SELECT [X],[Y] FROM CTE_T2 
INTERSECT 
SELECT [X],[Y] FROM CTE_T3 

Diese Anweisung erzeugt das folgende Ergebnis

X   Y 
----------- ---- 
24   a11 
25   a12 

(2 row(s) affected)