我有一个 SSRS 报告,其中一个参数可以取 3 个值。选择查询在所有情况下都是相同的,但 where 子句需要根据参数值检查不同的日期字段。这可能在同一个查询中吗?
询问:
SELECT OrdNO, OrdType, customer, SalesRep, FundDate, DisbursementDate, Branch, SalesPrice
FROM Orders
-- Case @ReportType=1, use FundDate
where (FundDate >= @FromDate and FundDate <= @ToDate)
-- Case @ReportType=2, use DisbursmentDate
Where (DisbursementDate >= @FromDate and DisbursementDate <= @ToDate)
-- Case @ReportType=3, use both dates
where (FundDate >= @FromDate and FundDate <= @ToDate) or (DisbursementDate >= @FromDate and DisbursementDate <= @ToDate)
是的,如下所示。
或者,要使用您指定的示例 WHERE 子句,下面的呢?
这取决于但很可能是的(由于缓存了不同的查询计划,存在一些潜在的性能问题)。您能否更详细地说明在参数中输入的值的类型是什么?这 3 个值是否都将是日期,参数本身是否是您需要转换为适当类型的字符串值,以及您的查询是否在存储过程中?