是否有更有效的方法为SSRS报告创建SQL查询,根据参数值,它将返回根据日期字段过滤的记录:1 =所有行没有结束日期2 =所有行结束日期3 =所有行,不管参数值如何。我已经提出了下面的查询但是使用布尔值它需要一个或者声明对于每个条件都是重复的(我必须添加更多的条件!
我遇到的另一个问题是使用IF或CASE时 - 我收到一条错误消息,指出sclar变量无效。当我声明并使用默认值设置参数时,它可以工作。但不确定CASE / IF在这种情况下是否理想?谢谢。
loginStatus: function () {
return $http.post('api/users/loginStatus');
}
答案 0 :(得分:0)
如果您稍微更改一下查询,实际上没有重复的代码,忽略对@Parameter
值的检查:
select t1.field_seq_no
,t1.field_end_dt
,t2.area_off
from table t1
inner join MyTable2 t2
on t1.comp_id = t2.comp_id
and t1.prty_ref = t2.prty_id
and t2.area_off IN (@area) -- This part is consistent so doesn't need to be repeated.
where (@Parameter = 1
and t1.field_end_dt is null
)
or (@Parameter = 2
and t1.field_end_dt is not null
)
or @Parameter = 3;
当然,如果您认为过滤语句不应该在JOIN
子句中,您可以使用一些额外的括号将其放在WHERE
中:
select t1.field_seq_no
,t1.field_end_dt
,t2.area_off
from table t1
inner join MyTable2 t2
on t1.comp_id = t2.comp_id
and t1.prty_ref = t2.prty_id
where t2.area_off IN (@area) -- This part is consistent so doesn't need to be repeated.
and (
(@Parameter = 1
and t1.field_end_dt is null
)
or (@Parameter = 2
and t1.field_end_dt is not null
)
or @Parameter = 3
);