0

私は2つのテーブルを持っています。

tbl_Invoice

請求書

tbl_Payment

支払い

私が欲しいのはList of Pending/Partial Invoices、特定のクライアントによるものです。

私が試したことは次のとおりです。

Select * from tbl_Invoice I 
    left join tbl_payment P on (I.client_id = P.client_id 
        AND I.invoice_id <> P.invoice_Id)
    left join tbl_client C on I.client_id = C.client_id
    WHERE I.client_id = 8

しかし、それは私にいくつかの間違った出力を与えます。

Invoice No  Client Name Date    details             Amount  Paid
----------------------------------------------------------------
ATPL00001   Vishal  10 Dec,2012 Web Designing       100.00  50.00
ATPL00001   Vishal  10 Dec,2012 Web Designing       100.00  10.00
ATPL00001   Vishal  10 Dec,2012 Web Designing       100.00  100.00
ATPL00001   Vishal  10 Dec,2012 Web Designing       100.00  100.00
ATPL00002   Vishal  07 Dec,2012 Software Development        1000.00

そのため、保留中/一部支払い済みの請求書を取得する方法がわかりません。

誰でも助けてくれますか.!!

4

2 に答える 2

1

これを試してください(必要に応じて、請求書テーブルからの2番目の選択クエリに列を追加できます

;WITH cte (clientid, invoiceid,  amountPaid)
As
(
   Select client_id clientId, invoice_id invoiceId,  sum(amt) amountPaid
   From tbl_Payment
   Where client_id = @YourClientId
   Group by invoice_id, client_id
)
Select client_id, invoice_id, (total_Price - Isnull(amountPaid,0)) toBePaid
From tbl_invoice I Left join cte On I.clinet_id = cte.clientId 
           And I.invoice_id = cte.invoiceid
Where (total_Price - Isnull(amountPaid,0)) > 0
于 2012-12-19T08:48:32.600 に答える
0
Select invoice_ID,Client,total_price - Coalesce(AMT,0) as [open]
from
(
select invoice_ID,Client,total_price
,(Select sum(AMT) as AMT from tbl_Payment where tbl_Payment.invoice_ID=tbl_Invoice.invoice_ID) as payed
 from tbl_Invoice left join tbl_client C on tbl_Invoice.client_id = C.client_id
 ) a
 where total_price - Coalesce(AMT,0)>0 
于 2012-12-19T08:34:20.380 に答える