首先我有這樣的SQL查詢選擇一些值:在SQL查詢中而忽略了Where子句
DECLARE @list TABLE
(
[DocID] int,
[OrderQuantity] decimal(18,3)
)
INSERT INTO @list (DocID, OrderQuantity)
(SELECT
tblCusDocsPos.DocID, tblCusDocsPos.OrderQuantity,
FROM
tblCusDocsPos
LEFT OUTER JOIN
tblCusDocsPos ON tblCusDocsPos.DocID = tblCusDocsPos.DocID
WHERE
(tblCusDocs.ActualAB = 0)
GROUP BY
tblCusDocsPos.DocID , tblCusDocsPos.OrderQuantity)
SELECT
[tblCusDocs].[DocID], [tblCusDocs].[DocTypeID],
[tblCusDocs].[ContractNum],
[tblCusDocs].[OrderQuantity], list.OrderQuantity
FROM
tblCusDocs
LEFT OUTER JOIN
[tblCusDocsPos] ON [tblCusDocsPos].DocID = [tblCusDocs].DocID
LEFT OUTER JOIN
@list ON list.DocID = [tblCusDocs].DocID
WHERE
[tblCusDocs].ActualAB = 1
這裏的問題是:我值插入我的表稱爲list
與條件ActualAB = 0
。現在表格正在填補,但在SELECT
聲明的主要WHERE
條款中。由於條件ActualAB = 1
,這些值將被拋出。
是否可以忽略列表中的項目的主要where子句並返回所有值?這可以在一個查詢中完成嗎?
非常感謝。
編輯:
這是越來越綁定到網格上在端部的性質。因此,我們使用一種加載器來評估SELECT
語句並接收所有數據,但由於WHERE
子句末尾列表中的值再次被過濾。 因此,輸出應該是一個包含值的表格。由主WHERE
子句過濾的三列和由上述WHERE
子句過濾的一個(list.OrderQuantity)。
EDIT2:
好吧我試圖用數據樣本表的種類更清楚地解釋它。
我從與這樣的內容的表濾波:
DocID | AB | OrderQuantity | ContractNum
1 1 2 111
2 0 5 111
3 1 0 222
4 1 10 333
5 1 3 444
在這種情況下,由於主要的WHERE
子句,我將得到AB = 1的所有值。 假設我正在過濾ContractNum。在我的情況下,我想也有四個結果,但是當我有相同的ContractNums時,我寧願選擇AB = 1的OrderQuantity值。
只是刪除where子句,如果你不想要它? – ADyson
由於其他值位於我的tblCusDocs表中,因此WHERE子句必須存在。所以我需要在一個這樣的語句中過濾來自AB = 0的一個表中的值和來自另一個具有AB = 1的值。 – Canox
也許如果你給我們一些樣本數據和預期結果,以明確你想要什麼 – GuidoG