2017-06-15 111 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 | 
+------+------+ 

Ť他需要的结果集应满足以下条件。

我需要t4.code,t4.name,总和(量)为S1,如果纸币类型= 0,和(t1.amount)为S2,如果billtype = 1

即结果集应该是

回答

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。 –