2014-03-06 110 views
0

排序,因爲它只是SQL的一部分,並且只做了一週半的時間。所以我現在很抱歉,這個問題很簡單,或者看起來很愚蠢。SQL查詢報告尚未支付的發票,按發票號

我想提供一份報告,說明在給定日期尚未付款的發票,按發票號排序。

這就是我已經顯示的付款發票但沒有給定的日期..我如何顯示未被31-MAR-14支付的發票。

SELECT INVOICE.INVOICE_NUMBER, INVOICE.INVOICE_DATE, PAYMENT.PAYMENT_NO, PAYMENT.INVOICE_NUMBER 
FROM INVOICE, PAYMENT 
WHERE INVOICE.INVOICE_NUMBER = PAYMENT.INVOICE_NUMBER 
ORDER BY INVOICE.INVOICE_NUMBER; 
+0

您是否在付款中有一列指定付款的當天? – steinmas

+0

是的,我將'Payment_No''Payment_Method''Date_of_payment'和'Invoice_number'作爲外鍵。在付款表中。 –

+0

因此,您正在查找3月31日尚未支付的所有發票?這是否意味着付款表中有一個條目,日期是> 3月31日?或者在付款表中根本沒有輸入特定發票。 – steinmas

回答

0

您需要將兩張表連同LEFT JOIN一起加入,然後查看付款日期> 31-MAR-14。試試這樣:

SELECT INVOICE.INVOICE_NUMBER, INVOICE.INVOICE_DATE, PAYMENT.PAYMENT_NO, PAYMENT.INVOICE_NUMBER 
FROM INVOICE 
LEFT JOIN PAYMENT ON INVOICE.INVOICE_NUMBER = PAYMENT.INVOICE_NUMBER 
WHERE PAYMENT.Date_of_payment > '3/31/2014' 
ORDER BY INVOICE.INVOICE_NUMBER; 

這看起來是2014年3月31日之後所有付款。您可能需要添加另一個條件,以限制您要查找的發票。

要檢查尚未付款的付款,請查看PAYMENT表中的任何字段爲空的位置。 SQL是這樣的:

SELECT INVOICE.INVOICE_NUMBER, INVOICE.INVOICE_DATE, PAYMENT.PAYMENT_NO, PAYMENT.INVOICE_NUMBER 
FROM INVOICE 
LEFT JOIN PAYMENT ON INVOICE.INVOICE_NUMBER = PAYMENT.INVOICE_NUMBER 
WHERE INVOICE.INVOICE_DATE = '3/31/2014' 
AND PAYMENT.PAYMENT_NO IS NULL 
ORDER BY INVOICE.INVOICE_NUMBER; 

留在這種情況下,JOIN總是發票表返回值,但如果支付尚未進入尚未到位的付款方式可能返回NULL值。檢查AND PAYMENT.PAYMENT_NO IS NULL會告訴您尚未付款。

+0

非常感謝,但那是顯示發票已支付。如果我想查看哪些發票尚未付款,我該怎麼辦? –

+0

因此,如果付款尚未完成,付款表中應該沒有條目嗎?在這種情況下,您希望過濾哪些發票日期? 2/1的發票日期是否工作,或者您只是在查找日期爲3/31的發票? – steinmas

+0

因此,在付款中,我只有paymnet_no,payment_method,date_of_payment和Invoice_number(發票號碼是發票中的外鍵)。 所以在付款時,我有大約21張已付款的發票,由payment_no(主鍵)和Invoice_number(來自inovoice的外鍵)標識。我想要做的是,列出關於在給定日期還沒有付款的發票的報告。然後按發票號 –

1
SELECT PAYMENT.PAYMENT_NO 
    FROM INVOICE, PAYMENT 
    WHERE INVOICE.INVOICE_NUMBER = PAYMENT.INVOICE_NUMBER 
    AND INVOICE.INVOICE_DATE = 'AAAAMMJJ' 
    ORDER BY INVOICE.INVOICE_NUMBER; 

嘗試這樣的事情。 我有問題。 How do you say發票沒有支付?

+0

謝謝,但多數民衆贊成在努力解決。我不知道如何列出所有尚未付款的發票。 –