我尝试编写一个查询,当传递两个变量时,第一组是数字1-4,第二组数字是1-2。我想只选择符合条件的行。到目前为止,我已经提出了这个问题,现在我对如何使用我的结果调用行感到有点迷失。
DECLARE @Task INT
DECLARE @Status INT
SET @Task = 1 --Test Values can be 1,2,3,4
SET @Status = 1 -- Test Values can be 1,2
SELECT
Pics
,Title
,Photos
,Reports
FROM
DATES
WHERE
CASE
WHEN @Task = 1 AND @Status = 1 THEN Pics IS NOT NULL
WHEN @Task = 2 AND @Status = 1 THEN Title IS NOT NULL
WHEN @Task = 3 AND @Status = 1 THEN Photos IS NOT NULL
WHEN @Task = 4 AND @Status = 1 THEN Reports IS NOT NULL
ELSE NULL
END
示例数据:以下是我正在使用的内容。
我有2个下拉框,一个名为“任务”,其中包含4个值Pics,报告,照片,标题。
第二个框保存完整或未完成的1或2
我在调用此查询时显示所有4个报告,标题,图片,照片,但如果我想查看完成的所有报告,我可以选择报告值,然后选择完整标签。示例(任务)报告= 3和(状态)完成= 1.
向我提供已完成的所有报告,并且即使它们为空,仍然显示其他3个值。
答案 0 :(得分:4)
你想要的是永恒简单的AND / OR:
DECLARE @Task INT
DECLARE @Status INT
SET @Task = 1
SET @Status = 1
SELECT
Pics
,Title
,Photos
,Reports
FROM DATES
WHERE @Status = 1
AND (
(@Task = 1 AND Pics IS NOT NULL)
OR
(@Task = 2 AND Title IS NOT NULL)
OR
(@Task = 3 AND Photos IS NOT NULL)
OR
(@Task = 4 AND Reports IS NOT NULL)
)
答案 1 :(得分:1)
使用了@JohnHC示例并对其进行了处理。毕竟我带着一个CASE,因为它做了我需要做的事情。这是完成的代码。感谢所有的信息和帮助!如果您认为还有其他方式,请告诉我。
project-1