2012-12-07 23 views
0

我正在搜索具有> 0和<的發票的發票單項表。0發票單項表包含發票中所有項目的詳細信息。我該如何編寫一個查詢,以提供所有發票數量> 0和< 0.搜索發票表格以查找數量大於0且小於0的發票0

+3

添加相關表的模式在你的問題.. –

+0

曾經heared的不等於運營商<>嗎? – Nicktar

+0

我嘗試使用公用表表達式,並且執行查詢導致超出報表的時間很長。 –

回答

0

這樣的情況如何?這使用兩個查詢。第一個發現負數量的所有發票。然後,它應用第二個查詢從發票清單中查找那些也具有正數量的查詢。

SELECT DISTINCT 
    PosNegInvoices.InvoiceID 
FROM ItemizedInvoice AS NegInvoices 
CROSS APPLY 
(
    SELECT 
    InvoiceID 
    FROM ItemizedInvoice 
    WHERE InvoiceID = NegInvoices.InvoiceID 
    AND Quantity > 0 
) AS PosNegInvoices 
WHERE NegInvoices.Quantity < 0 

下面是一個使用CTE的另一個版本:

WITH NegInvoices AS 
(
    SELECT 
    InvoiceID 
    FROM ItemizedInvoice 
    WHERE Quantity < 0 
), 
PosInvoices AS 
(
    SELECT 
    InvoiceID 
    FROM ItemizedInvoice 
    WHERE Quantity > 0 
) 
SELECT DISTINCT 
    PosInvoices.InvoiceID 
FROM NegInvoices 
JOIN PosInvoices 
ON NegInvoices.InvoiceID = PosInvoices.InvoiceID 
+0

感謝您的回覆。我使用了與您建議的CTE相同的方式,但需要大約15分鐘執行查詢。我正在嘗試改進查詢。事實上它的大量數據和詳細的發票。 –

+0

你的索引是什麼?包含InvoiceID和Quantity的項目表上有一個非聚集索引可能會有所幫助。事實上,您甚至可以爲每個負面和正面條件創建篩選索引,具體取決於SQL Server的版本。 – BStateham

相關問題