2016-03-02 28 views
-2

我正在查找如何篩選查詢的數據結果,如果某個位置使用特殊的where子句。很難解釋我在尋找的話做,但這裏是我的例子:Where子句篩選某些選定數據的結果

我有一個從一系列的位置拉結果的查詢:

Select a.Location, a.Invoice_date, a.service, a.QTY, b.user 
    From Invoice_detail as a inner join Invoice_tb as b on 
      a.invoice_number = b.invoice_number and a.location = b.location 
    where invoice_date between @startdate and @enddate and Not (a.location = 1 and a.service = 1) 
    order by a.location 

這給了我下面的輸出:

Location   Invoice Date  Service  QTY User 
    1     1/2/16    1   1  Tim 
    1     1/2/16    1   1  Bob 
    1     1/2/16    1   1  Tim 
    1     1/2/16    2   1  Bob       
    1     1/2/16    3   1  Bob 
    2     1/2/16    1   1  Tim 
    2     1/2/16    2   1  Bob 
    2     1/2/16    4   1  Tim 
    3     1/2/16    1   1  Bob 
    3     1/2/16    6   1  Tim 
    3     1/2/16    1   1  Bob 

如果位置爲'1',我想不返回服務'1'。但我確實想將服務1退回到其他任何位置。所以,我想我的輸出看起來像這樣:

Location   Invoice Date  Service  QTY User 
    1     1/2/16    2   1  Bob       
    1     1/2/16    3   1  Bob 
    2     1/2/16    1   1  Tim 
    2     1/2/16    2   1  Bob 
    2     1/2/16    4   1  Tim 
    3     1/2/16    1   1  Bob 
    3     1/2/16    6   1  Tim 
    3     1/2/16    1   1  Bob 
+1

你就不能添加條件'AND NOT(服務= 1和位置= 1)'? –

回答

1

WHERE條件添加AND NOT(Service = 1 AND Location = 1)

SELECT 
    a.Location, 
    a.Invoice_date, 
    a.service, 
    a.QTY, 
    b.[user] 
FROM Invoice_detail AS a 
INNER JOIN Invoice_tb AS b 
    ON a.invoice_number = b.invoice_number 
    AND a.location = b.location 
WHERE 
    invoice_date BETWEEN @startdate AND @enddate 
    AND NOT(a.service = 1 AND a.Location = 1) 
ORDER BY a.location 

DEMO

+0

這不起作用,我不確定是否因爲我使用了連接而你不在演示中? – Shmewnix

+0

由於條件中的列來自主表(來自'FROM'),所以使用'JOIN'並不重要。 –

+0

這對我不起作用。我仍然可以在位置1處獲得服務1的任何內容。 – Shmewnix