SQL / Impala,如何更快速有效地编写增加的条件语句?

时间:2018-08-01 12:59:38

标签: sql impala

我希望有人可以在这里帮助我。

我正在用黑斑羚编写一个CASE,以查找表中的遗漏行。

但是,我需要将下面的示例写为WHEN 1000 =999。代替编写1000条CASE行,有没有需要更少代码的更有效,更快捷的解决方案?这对我有很大帮助。谢谢。

CASE WHEN dif_tradecount = 2 THEN 1
            WHEN dif_tradecount = 3 THEN 2
            WHEN dif_tradecount = 4 THEN 3
            WHEN dif_tradecount = 5 THEN 4
            WHEN dif_tradecount = 6 THEN 5
            WHEN dif_tradecount = 7 THEN 6
            WHEN dif_tradecount = 8 THEN 7
            WHEN dif_tradecount = 9 THEN 8
            WHEN dif_tradecount = 10 THEN 9
            WHEN dif_tradecount = 11 THEN 10
            WHEN dif_tradecount = 12 THEN 11 .....
            ELSE null
            END AS missed_messages    

3 个答案:

答案 0 :(得分:2)

如果我的任务正确无误:

CASE
    WHEN dif_tradecount > 1 and dif_tradecount<=1000 THEN dif_tradecount-1
    ELSE null
END AS missed_messages    

答案 1 :(得分:1)

您可以这样做:

White

我想知道为什么(case when dif_tradecount between 2 and 1000 then dif_tradecount - 1 end) as missed_messages 是必要的。也许:

case

也可以。

答案 2 :(得分:0)

为什么不呢?

if(dif_tradecount>1,dif_tradecount-1,NULL)