2011-06-13 61 views
1
select docket_number,aging from (
    select docket_number, 
     sum(cast(dateDiff("mi",assigned,coalesce(completed,getdate()))/60.00 as decimal(20,2))) aging 

    from ft_details_h 

    group by docket_number 
)a where aging case when @hh <= 72 then <= @hh else > @hh end 

嗨我怎样才能满足其中语句当参数@hh小于或= 72,其中声明应当老化< = @hh并且当老化大于72 where语句应老化> @hh情况下,当在语句参数

+0

有与这种情况的“死区”。不知道'老化'是什么类型,但我们假设它是'int'。同时让'aging = 73'和'@hh = 73'。这个“老化”会被选中吗?让我们来看看。 '@hh <= 72'?不,73是*不*小于或等于72.'老化> @ hh'? 73不是*大于73,所以再次** **不**。我认为,它应该是(使用原始的伪代码)'当@hh <= 72然后<= @hh else > = @hh结束时出现老化情况。 – 2011-06-13 11:57:48

回答

0

你可以做这样的事情:

where 
    (@hh <= 72 and aging <= @hh) or 
    (@hh > 72 and aging > @hh) 
0

当你写你的问题,请尝试:

where (aging <= @hh And @hh <= 72) Or 
     (aging > @hh And aging > 72) 

但是我怀疑你有一个错字,实际上意味着

where (aging <= @hh And @hh <= 72) Or 
     (aging > @hh And @hh > 72)