在SQL查询中选择一些值,同时忽略Where子句

在SQL查询中选择一些值,同时忽略Where子句,sql,sql-server,tsql,select,where,Sql,Sql Server,Tsql,Select,Where,首先,我有一个SQL查询: DECLARE @list TABLE ( [DocID] int, [OrderQuantity] decimal(18,3) ) INSERT INTO @list (DocID, OrderQuantity) (SELECT tblCusDocsPos.DocID, tblCusDocsPos.OrderQuantity, FROM tblCusDocsPos LEFT O

首先,我有一个SQL查询:

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
,这些值被抛出

是否可以忽略列表中项目的main where子句并从中返回所有值?这可以在一个查询中完成吗

非常感谢

编辑:

这将在最后的属性上绑定到网格。因此,我们使用了一种加载器,它计算
SELECT
语句并接收所有数据,但由于末尾的
WHERE
子句,列表表中的值将再次被过滤。 因此,输出应该是一个带有值的表。三列由主
WHERE
子句过滤,一列(list.OrderQuantity)由上面的
WHERE
子句过滤

编辑2:

好的,我试着用一种带有数据的样本表来更清楚地解释它

我正在从包含以下内容的表中筛选:

DocID | AB | OrderQuantity | ContractNum

1111

205111

310222

4110333

513444

在这种情况下,由于main
WHERE
子句,我将获得AB=1的所有值。
假设我正在筛选ContractNum。在我的例子中,我希望也有四个结果,但当我有相同的ContractNums时,我宁愿选择OrderQuantity值,其中AB=1

这是一个暗中猜测,如果ActualLab=1或结果在列表表中,您希望得到结果

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 OR list.DocID IS NOT NULL

如果不需要,只需删除where子句??不,where子句必须存在,因为tblCusDocs表中有其他值。因此,我需要在一个这样的语句中,从一个AB=0的表和另一个AB=1的表中筛选值。如果您给我们一些样本数据和预期结果,以明确您想要编辑什么。希望现在更清楚。你在找CTE吗?