在SQL查询中选择一些值,同时忽略Where子句
首先,我有一个SQL查询:在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
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
在这种情况下,由于mainWHERE
子句,我将获得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吗?