2017-06-15 6 views
0

Ich habe folgende 4 Tabellen.Benötigen Sie Hilfe beim Verbinden von 4 Tabellen

T1

+------+-------+-------------+------+ 
    | type | pcode | ccode  | amnt | 
    +------+-------+-------------+------+ 
    | s |  1 |  1801 | 1000 | 
    | s |  1 |  1801 | 2000 | 
    | s |  1 |  1801 | 3000 | 
    | s |  2 |  1802 | 1500 | 
    | s |  3 |  1802 | 2500 | 
    +------+-------+-------------+------+ 

T2

+-------+-------+ 
| btype | Ccode | 
+-------+-------+ 
|  0 | 1701 | 
|  0 | 1801 | 
|  0 | 1801 | 
|  1 | 1801 | 
|  0 | 1802 | 
|  1 | 1802 | 
+-------+-------+ 

T3

+-------+------+-------+ 
| pcode | name | scode | 
+-------+------+-------+ 
|  1 | pep | 1001 | 
|  2 | coke | 1002 | 
+-------+------+-------+ 

T4

+------+------+ 
| code | name | 
+------+------+ 
| 1001 | pep | 
| 1002 | coke | 
+------+------+ 

T Der Ergebnissatz, den ich brauche, sollte die folgende Bedingung erfüllen.

Ich brauche t4.code, t4.name, Summe (Betrag) als s1, wenn bill type = 0, sum (t1.amount) als s2 wenn billtype = 1

dh die Ergebnismenge sollte

Antwort

0

Sie könnten innere verwenden beitreten und Fall für Filter dann Werte

select t4.code, t4.name 
    , sum(CASE WHEN t2.btype=0 then T1.amnt else 0 end) s1 
    , sum(CASE WHEN t2.btype=1 then T1.amnt else 0 end) s2 

from T4 
INNER JOIN T3 on T3.scode = T4.code 
INNER JOIN T1 on T3.pcode = T1.pcode 
INNER JOIN T2 on T1.ccode = t2.ccode 
+0

gibt es Fehler mit den Klammern zu summieren. Hilf mir –

+0

Antwort aktualisiert .... – scaisEdge

+0

Vielen Dank, aber ich bekomme die gleichen Werte in S1 und S2. Beide zeigen die Summe von s1 und s2, d. H. 6000 bzw. 4000. –

Verwandte Themen