2012-12-12 142 views
0

我有两个表:需要帮助加入查询

tbl_Invoice

Invoice

tbl_payment

Payment

当我通过CLIENT_ID = 5则所需的输出应该是:

PSUM  IPRICE   Amt_Type 
----------- -------------- ---------------- 
100.00  100.00   USD 
    0.00  1000.00  GBP 

PSUM是总付款的总和

IPRICE,开具发票

的总价格的总和我曾尝试是:

Select SUM(P.Amt) as PSUM, SUM(I.Total_price) as IPRICE, I.Amt_Type from 
[tbl_payment] P left join [tbl_Invoice] I on P.invoice_Id = I.invoice_Id 
    WHERE P.client_id = @Client_Id and I.client_id = @Client_Id 
    group by I.Amt_Type 
+0

什么是该数据的逻辑是什么?源表中的“PSUM”和“IPRICE”字段是什么? – Taryn

+0

更新了我的问题.. @ bluefeet –

回答

2

以下似乎是working:

declare @client_id int = 5 

select 
    IsNull(sum(p.amt), 0) PSUM, 
    IsNull(sum(i.total_price), 0) IPRICE, 
    i.amt_type 
from tbl_invoice i 
left join tbl_payment p 
    on i.invoice_id = p.invoice_id 
    and i.client_id = p.client_id 
where i.client_id = @client_id 
group by i.amt_type, i.invoice_id 
order by i.invoice_id 

SQL Fiddle with Demo

结果:

| PSUM | IPRICE | AMT_TYPE | 
---------------------------- 
| 100 | 100 |  USD | 
| 0 | 1000 |  GBP | 
+0

它的工作...非常感谢..你拯救了我的一天.. @ bluefeet –