首先我有这样的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