我有一个报告,其中用户可以选择一个过滤器值这三个当中,可以点击提交按钮前通过的日期范围(“从日期”和“终止日期”)查询:SQL服务器 - 棘手的where子句
日期范围内- 活动
- 新的日期范围内的客人
- 新客人除了日期范围
我想在火选择查询myTable的表示所选的过滤器值。
如果用户选择第一个值(1),则查询应提供所有记录,其中dtEventDate位于输入的日期范围之间。
如果用户选择第二个值(2),查询应该给出dtGuestCreatedDate在输入日期范围之间的所有记录。
同样,如果用户选择第三个值(3),则查询应该给出dtGuestCreatedDate大于'To Date'的所有记录。
我的查询会是这样,
Select * from myTable
where
if '#filterValue#'='Events within Date Range'
then myTable.dtEventDate between '' and ''
else if '#filterValue#'='New Guests withing Date Range'
then myTable.dtGuestCreatedDate between '' and ''
else myTable.dtGuestCreatedDate > ''
我不知道我该怎么写这个条件。
我有这个迄今为止,这将使我的日期范围内的事件:
select * from myTable
where myTable.dtEventDate between
case when '#filterValue#'='Events Within Date Range' then '10/01/2016' end
and '11/30/2016'
但我需要在where子句检查于一身的三个滤值。
任何人都可以帮忙吗?
你使用哪种编程语言?您应根据用户选择的过滤器值动态构建您的'WHERE'条件 – rbr94