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 = '';
以上就完成了我的需求,觉得还是很好用的。如果您有什么好的写法和建议,欢迎讨论。
sqlserver2008 case when then else end的更多相关文章
- SQLServer2008 在where条件中使用CASE WHEN
create table #temp( id int identity(1,1), name varchar(20), startYear int, startMonth in ...
- SQLServer2008 关于CASE WHEN
CASE WHEN的两种格式 1.简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END 2.Case搜索函数 CASE ...
- SQLSERVER2008 存储过程基本语法
SQLSERVER2008 存储过程基本语法 来源:https://www.cnblogs.com/tlduck/p/5462399.html 一.定义变量--简单赋值declare @a intse ...
- C#中,switch case语句中多个值匹配一个代码块的写法
switch (num) { case 1: Response.Write("1"); break; case 2: case 3: Response.Write("2| ...
- Android Studio快捷键switch case 轻松转换为if else
Android Studio快捷键switch case 轻松转换为if else 今天碰到的问题,没有找到资料,后面找到了方法,这个记下来,转载请注明出处:http://www.cnblogs.co ...
- 你真的会玩SQL吗?Case也疯狂
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- java中的switch case
switch-case语句格式如下 switch(变量){ case 变量值1: //; break; case 变量值2: //...; break; ... case default: //... ...
- sql case when...then...else...end 选择判断
达到的需求为: 吓数收回日期为空:当接单日期不等于空和当天减接单日期大于3天时,为1,否则为0:当接单日期为空.最大发织交期不等于空和当天减去最大发织交期大于3天时,为1,否则为0:当接单日期和发织交 ...
- C# 中Switch case 返回不止用break
Switch(temp) { case "A": //跳出循环 break; case "B": //返回值 return var; case "C& ...
随机推荐
- 需要熟悉的几个调试命令:objdump/pmap/ldd/stace
最近要编译很多库,还涉及到若干进程操作,所以就把相关的命令记录下来. 一,objdump命令 该命令适用于ELF可执行文件,常用的命令如下: objdump -h xx.o : 输出ELF文件的各个段 ...
- Activiti 使用自己的身份认证服务
Activiti 中内置了用户和组管理的服务,由identityService 提供调用接口,默认在spring配置中如下: <bean id="identityService&quo ...
- 使用POI把Word Excel转为HTML
此方法是针对Office2003的,但是word中如果有图片,图片能够解析出来但是HTML文件中不显示.也不支持excel中的图片解析. 所需jar包如下如下: 1:PoiUtil.java pack ...
- 简述TVS是的命名和封装
1. 瞬态抑制二极管简称TVS (Transient Voltage Suppressor ),TVS的电气特性由P-N结面积,参杂浓度及晶片阻质决定的.其耐突波电流的能力与其P-N结面积成正比. 特 ...
- js基础例子购物车升级版(未优化版)
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Java IO 概述
输入和输出-数据源和目标媒介 术语“输入”和“输出”有时候会有一点让人疑惑.一个应用程序的输入往往是另一个应用程序的输出.那么OutputStream流到底是一个输出到目的地的流呢,还是一个产生输出的 ...
- JSON解析---初识
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式 全然独立于语言的文本格式 易于人阅读和编写 易于解析和生成 (网络传输速度快) JSON语法规则 数据在 ...
- HashMap的存储结构及原理
1.HashMap的数据结构(HashMap通过hashcode对其内容进行高速查找,是无序的) 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端. 数组 :数组的存储区是连续的,占 ...
- unity3d 学习笔记(一)
操作:按下shit 点击坐标轴中心 切换透视图 动画烘焙的概念:相当于把原来的控制器动画或者IK(骨骼)动画所有塌陷为逐帧动画,导出的时候必须选这一项 着色器:从技术的角度来看,着色器是渲染器的一个部 ...
- [Err] 1449 - The user specified as a definer ('admin_isbox'@'localhost') does not exist
晚上加班调用一个远程拷贝的本地Mysql的储存过程,报错:[Err] 1449 - The user specified as a definer ('admin_isbox'@'localhost' ...