我找到了几篇关于如何用几种方法(IS NULL、CASE、COALESCE)完成与我想要做的相反的文章,但我认为在阅读完所有这些之后我比以往任何时候都更加困惑,并且可能使解决方案更难比它需要的。我是 T-SQL 的新手,目前正在使用 VS 2005 构建基本医疗报告。
通过使用转换命令忽略时间戳,我可以使日期范围参数正常工作,从而为我提供当天或日期范围的所有记录。我现在想按初步报告日期过滤 SSRS reprot,以查找带有初步报告的记录,或者表中的所有记录。
- 如果未创建初步报告,则数据库为 NULL
- 如果创建了初步报告,则数据库具有时间戳。(显示创建日期和时间)
我需要找到所有不为 NULL 的记录或所有记录。(使用参数)
我有一个参数“仅显示初步报告?” @PrelimOnly 回答是或否。
如果我使用以下内容,它将正确显示所有记录(所有不为 NULL 的记录仅显示带有 Prelim 报告/时间戳的记录)
LIS_Results.Prelim_Report_Date <> '@PrelimOnly' ----User selects YES it passes NULL
但是,如果用户选择 NO,我将如何让它显示包括 NULL 在内的所有记录?
感谢您的任何帮助
谢谢你们的帮助,最终是两者的结合才得以实现。语法如下。
WHERE (@PrelimOnly = 'NO') AND (CONVERT(VARCHAR(10), LIS_Results.Final_Report_Date, 101) BETWEEN @ReportStartDate AND @ReportEndDate) OR (LIS_Results.Prelim_Report_Date IS NOT NULL) AND (CONVERT(VARCHAR(10), LIS_Results.Final_Report_Date, 101) BETWEEN @ReportStartDate AND @ReportEndDate)