2016-11-21 1 views
0

Ich habe zwei Tabellen wie folgt:sql db2 innere Verknüpfung Vergleich Nachschlagewerte

Table_1

ID_1 | VALUES_1 
1 | 123 
2 | 234 
3 | 345 

table_2

ID_2 | VALUES_2 
1 | 123 
2 | 234 
3 | 349 
4 | 456 
5 | 567 
6 | 678 

Ich mache eine innere Verknüpfung der Werte von beiden vergleichen Tabellen:

SELECT ID_1, VALUES_1, TABLE_2.VALUES_2 
FROM TABLE_1,TABLE_2 
WHERE 
    TABLE_1.ID_1 = TABLE_2.ID_2 AND 
    TABLE_1.VALUES_1 <> TABLE_2.VALUES_2 

Welche gibt mir die Zeilen ich interessiert bin,

ID_1 | VALUES_1 | VALUES_2 
3 | 345  | 349 

Gibt es eine Möglichkeit, eine dritte Spalte als Teil der Abfrage einzufügen, um die Differenz zwischen VALUES_1 und VALUES_2 angezeigt werden? Z.B.

ID_1 | VALUES_1 | VALUES_2 | DIFFERENCE 
3 | 345  | 349  | 4 
+1

Kennen Sie den '-' Operator? –

Antwort

1
SELECT 
    ID_1 
    ,VALUES_1 
    ,TABLE_2.VALUES_2 
    ,TABLE_2.VALUES_2 - VALUES_1 as Differnce 
FROM 
    TABLE_1 
    INNER JOIN TABLE_2 
    ON TABLE_1.ID_1 = TABLE_2.ID_2 
    AND TABLE_1.VALUES_1 <> TABLE_2.VALUES_2 

Hinweis I konvertiert Ihre Anfrage auch explizit verwenden Join-Syntax statt implizit kommen als dass je mehr Standardmethode ist.

+0

Kann ich 'Difference' dann als eine Art Variable in einer UND-Klausel verwenden? Z.B. 'AND TABLE_1.VALUES_1 <> Difference ' – joshi123

+1

@ joshi123 Nein, Sie könnten es nicht in einer WHERE- oder einer ON (AND) -Klausel verwenden, wenn Sie nicht die gesamte Abfrage als abgeleitete Tabelle festgelegt haben. Sie sollten es jedoch als Verknüpfung in einer ORDER BY-Klausel verwenden können – Matt