• sqlserver2008 case when then else end


    在写sql语句的时候,有时候我们需要对字段的只进行判断计算。查看了下相关文档在sql2012、sql2014里边可以使用  IIF 函数直接完成。

    但是现在我需要在sql2008版本中完成最字段的计算。

    需求分析:有这样一张表

    我这有这么个需求我要得到(FirstEnd-FirstBegin)+ (SecondEnd+SecondBegin)的值(取得有多少个号可以使用)。

    看数据表:按照上边的公式我们得到的值是:12999 这个数对吗?

    举个例子 FirstBegin = 1 FirstEnd = 10 SecondBegin = 11 SecondEnd = 20  计算一下:18

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

    自己来数下号码数是 20 个,怎样,我们的公式显然少了2个。所以我们的公式变成了:

    (FirstEnd-FirstBegin+1)+ (SecondEnd+SecondBegin+1)

    但是这样还不行,假如SecondEnd+SecondBegin = 0的话,那么总数会多1.所以这里边我们需要对SecondEnd+SecondBegin差值做下判断。

    • 实现SecondEnd+SecondBegin=0的话,公式(FirstEnd-FirstBegin+1)ok;
    • SecondEnd+SecondBegin!=0的话,公式 (FirstEnd-FirstBegin+1)+(SecondEnd+SecondBegin+1)ok;

    要实现以上的需求:要用到 CASE WHEN THEN  ELSE END

    看sql语句:

    select 
        case when SecondEnd-SecondBegin=0 
        then (FirstEnd-FirstBegin) + 1 
        else (FirstEnd-FirstBegin + 1) + (SecondEnd-SecondBegin)+1
        end regular
    from T_VoucherInfo WHERE TypeCode = 1 AND OrganizationCode = '001';

    以上就完成了我的需求,觉得还是很好用的。如果您有什么好的写法和建议,欢迎讨论。

  • 相关阅读:
    Homework template (latex)
    Basic skill of searching
    国庆第三次集训: 2012 ACM-ICPC Asia Regional Contest Chengdu Site
    新学期随笔
    暑期集训感想
    暑期集训 DP 篇
    POJ 1195 Mobile Phones 二维树状数组
    51Nod1246 罐子和硬币,不能均分的题
    一维战舰,一道考区间的好题
    51NOD 1268 和为K的组合 搜索水题
  • 原文地址:https://www.cnblogs.com/gaolizhong/p/4401443.html
Copyright © 2020-2023  润新知