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& ...
随机推荐
- 什么是SPI通信?
SPI:高速同步串行口.3-4线接口,收发独立.可同步进行. SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口.是Motorola首先在其MC6 ...
- 用root帐号切换其他帐号提示 su: warning: cannot change directory to /home/oracle: Permission denied
用root帐号切换其他帐号提示: 出错原因: 基本上是根目录或者是/home/oracle目录权限的问题 解决办法: 更改根目录权限为755,并保证对应用户主目录的所属用户和所属组一致和用户名一致. ...
- spring注解方式 idea报could not autowire,eclipse却没有问题
解决办法1: 从根本上解决: File-Project Structure 页面 Facets下删掉 Spring(直接右键Delete) 这个解答是对的.并不会降低安全性!!因为创建项目的时候,都是 ...
- 前端模拟发送数据-Chrome下的REST Client
1)确定需要POST的数据 2)拼接数据,POST给服务器 3)查看服务器响应及结果
- 如何应对“改变现状”的失败"
参加工作后,利用闲暇时间看了一些书,发现以上的场景可以通过心理学,神经生物学等相关的知识来解析,同时也可以利用这些知识来进行一些改进.那么下文就来尝试通过心理学来解析这个场景,同时提出一些改进方法. ...
- ZooKeeper编程指导
简介 对于想要利用ZooKeeper的协调服务来创建一个分布式应用的开发人员来说,这篇文章提供了指导.包含了一些概念和实际性操作的信息. 这篇文章的前四个章节介绍了各种ZooKeeper的概念,这对理 ...
- jquery ajax提交json格式的数据,后台接收并显示各个属性
我的表单如下: <form onsubmit="return false"> <ul> <li><span>用户名</span ...
- C# 插入排序算法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 盘点20款表现出众的HTML5游戏
不管是对用户还是开发者来说,HTML5和JavaScript游戏这几年的发展真的是件好事.随着浏览器平台的日趋成熟,并开始整合这类型游戏所 要求的技术,我们每天都能在各大应用商店和社交网站中看到越来越 ...
- 在 IIS 上创建 FTP 站点
微软参考文档: 在 IIS 上生成 FTP 站点 主要过程: 1.控制面板 -> 程序 -> 启动或关闭Windows功能 -> 将Internet Information Serv ...