2017-06-15 9 views
0

私は以下の4つのテーブルを持っています。4つのテーブルを結合する際に助けが必要

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彼は結果セット私は次の条件を満たす必要があります。

Iが結果セットすなわちbilltype = 1

なければならない場合はS2となら紙幣種別= 0、SUM(t1.amount)S1としてt4.code、t4.name、和(量)が必要あなたは内部フィルターのために参加し、ケースを使用することができます

答えて

0

はその後、それらのブレースとの誤差がある

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

を合計する値。助けてください –

+0

答え更新.... – scaisEdge

+0

ありがとう、しかし私はs1とs2で同じ値を取得します。両方ともs1とs2の合計、すなわちそれぞれ6000と4000を示している。 –

関連する問題