我有一个复杂的存储过程,我需要能够隐藏连接到主表的表中的特定行。隐藏此行的标准取决于主表(Orders)中的值(DeductMoney)是否为1.我的存储过程与此类似:
SELECT
O.FileNumber
,ML.Line
,ML.Price
,ML.Description
FROM Orders O
INNER JOIN Main M
ON O.OrdersID = M.OrdersID
INNER JOIN MainLine ML
ON ML.MainID = M.MainID
WHERE
M.MainID = @MainID
结果集目前如下所示:
FileNumber | Line | Price | Description
---------------------------------------
0001 | 501 | $200 | DescriptionA
0001 | 502 | $300 | DescriptionB
0001 | 503 | $150 | DescriptionC
0001 | 504 | $100 | DescriptionD
0001 | 505 | $75 | DescriptionE
0001 | 506 | $500 | DescriptionF
现在,从Orders表中,有一个名为DeductMoney的列。此列仅适用于返回结果集的一个特定行,即行506.DeductMoney列可以是0或1,如果它是1,我需要从SQL SELECT中完全删除该行。基本上,如果DeductMoney = 1,则删除第506行存在的行。
遗憾的是,这些数据未传递给SSRS,因此无法在该级别过滤。有没有人想过如何实现这一目标?是否可以通过CASE声明来完成?非常感谢任何帮助!
根据列值
从SELECT中删除行答案 0 :(得分:1)
您需要在where
子句中添加逻辑:
WHERE M.MainID = @MainID AND
NOT (Line = 506 and DeductMoney = 1)
答案 1 :(得分:0)
这不会起作用,还是我误读了什么?
SELECT
O.FileNumber
,ML.Line
,ML.Price
,ML.Description
FROM Orders O
INNER JOIN Main M
ON O.OrdersID = M.OrdersID
INNER JOIN MainLine ML
ON ML.MainID = M.MainID
WHERE
M.MainID = @MainID
AND DeductMoney <> 1