15.6.8-sql小技巧
取月头月尾:
declare @someDay datetime,@firstDay datetime,@endDay datetime
set @someDay='2015.2.2'
set @firstDay=dateadd(month,datediff(month,0,@someDay),0)
set @endDay=dateadd(month,datediff(month,-1,@someDay),-1) select @someDay,@firstDay,@endDay
亮点在这里:
declare @someDay datetime, @someDay2 datetime
set @someDay =0
set @someDay2=-1
select @someDay,@someDay2
返回:

不用游标,插入和升级数据:
create table #AAA(id int, AAA int, BBB int,CCC int)
create table #BBB(id int, CCC int) insert into #AAA select 1,1,1,1 union select 2,2,2,2 union select 3,3,3,3 union select 4,4,4,4
insert into #BBB select 1,10 union select 2,6 union select 4,7-- union select 5,10 union select 8,100 update #AAA set CCC=(select CCC from #BBB where #BBB.id=#AAA.id) where exists(select id from #BBB where id=#AAA.id)
insert into #AAA select id,0,0,CCC from #BBB where not exists (select Id from #AAA where id=#BBB.id)
select * from #AAA drop table #AAA
drop table #BBB
在#AAA的基础上升级#BBB的数据,有则改无则加
在上面的基础上,继续升级:
create table #AAA(id int,aaa int,bbb int,ccc int)
create table #BBB(id int,ddd int,eee int) insert into #AAA select 1,1,1,1 union select 2,2,2,2 union select 3,3,3,3 union select 4,4,4,4
insert into #BBB select 1,2,3 union select 2,3,4 union select 5,6,7 update #AAA
set aaa=isnull((select top 1 ddd from #BBB where #BBB.id=#AAA.id),0),
bbb=isnull((select top 1 eee from #BBB where #BBB.id=#AAA.id),0)
--where exists (select id from #BBB where #BBB.id=#AAA.id) update #AAA
set aaa=isnull(b.ddd,0),
bbb=isnull(b.eee,0)
from #AAA a,#BBB b
where a.id=b.id insert into #AAA
select id,ddd,eee,0 from #BBB
where not exists (select id from #AAA where #AAA.id=#BBB.id) select * from #AAA
drop table #AAA
drop table #BBB
两个update#AAA的方法。第一个如果#BBB存在#AAA的id则修改对应值,不存在则将#AAA中的值归零。
第二个如果#BBB存在则修改对应值,不存在则跳过。
15.6.8-sql小技巧的更多相关文章
- SQL小技巧小知识
1.[ ]的使用 当我们所要查的表是系统关键字或者表名中含有空格时,需要用[]括起来,例如新建了两个表,分别为user,user info,那么select * from user和select * ...
- 手拼SQL小技巧,WHERE 1=1
由于项目要求,要手动拼接SQL,(不知道领导们怎么想的--),然后就再次回到原始时代,append(SQL). 但后面查询牵扯到动态多条件,如果是mybatis的话就直接 可以用<if>标 ...
- sql小技巧 group by datetime类型字段,只取其中的日期部分
工作中经常会遇到,要在sql中查询报表,查询结果要求按照日期来罗列, 或按照天, 或按照月,年. 这个时候我们经常会苦恼,datetime是精确到毫秒的,如果单纯的group by datetime就 ...
- SQL Server Profiler 跟踪sql小技巧
使用Profile监控sql时候经常会有很多很多的sql,想查询那条是自己的sql很困难,但是连接字串有个参数可以解决这个问题这个参数是Application Name例如说 我们在需要的数据库连接中 ...
- SQL小技巧(一)拼音首字母的模糊查询
基于Microsoft SQL Server 的标量值函数fun_GetPy,借鉴其他优秀的博主文章,此处贴出源码,以及使用方法 1.打开新建查询,贴如下代码,F5 /****** Object: U ...
- sql小技巧
--实际只会更新一条.可有效防止误操作.特别是操作线上正式数据时. UPDATE TOP(1) Table2 SET Culumn1='value'WHERE id IN(269102,269104) ...
- HTML+CSS学习笔记 (15) - css样式设置小技巧
水平居中设置-行内元素 我们在实际工作中常会遇到需要设置水平居中场景,今天我们就来看看怎么设置水平居中的. 如果被设置元素为文本.图片等行内元素时,水平居中是通过给父元素设置 text-align:c ...
- 13个mysql数据库的实用SQL小技巧
此文章为转载 使用CASE来重新定义数值类型 SELECT id,title, (CASE date WHEN '0000-00-00' THEN '' ELSE date END) AS date ...
- sql 小技巧
declare @pids varchar(max)='' ),pid)+','+@pids from product where pname like '%red%' select @pids
- sql小技巧——关闭自动提交,防止误操作
set IMPLICIT_TRANSACTIONS ON--关闭自动提交on 防止误操作,除非显式提交commit后,才会真正提交到数据库中,并且可以随时回滚操作.如下: set IMPLICIT_T ...
随机推荐
- sqlplus实现上下翻页设置
环境: 操作系统:red hat 5.8 OS 数据库:oracle 11g 11.2.0.1 安装软件:IO-Tty-1.07.tar. Term-ReadLine-Gnu-1.16.tar.uni ...
- ORACLE恢复神器之ODU/AUL/DUL
分享ORACLE数据库恢复神器之ODU.DUL和AUL工具. ODU:ORACLE DATABASE UNLOADER DUL:DATA UNLOADER AUL:也称MyDUL 关于三种工具说明: ...
- Orchard Compact v1.7.2
1. 仅包留了Core中的Settings和Shapes, 及Modules, Themes和jQuery模块. 2. 添加了对Oracle的支持. 下载地址: 二进制: Orchard.Compac ...
- C#执行OracleHelper
/// <summary> /// 执行存储过程获取带有Out的参数 /// </summary> /// <param name="cmdText" ...
- ArcMap 连接SDE 出错“Failed to connect to the specified server. Entry for SDE instance no found in services file.”
问题描述 环境: ARCMAP 10.0 ARCSDE FOR ORACLE 10.0 在通过用ArcMap 连接ORACLE SDE时出现上面的错. 解决方式 在 C:\Windows\Sy ...
- MySql获取表的字段名称、字段注解、字段类型、字段长度
SELECT COLUMN_NAME as '列名',COLUMN_COMMENT,DATA_TYPE as '字段类型' ,COLUMN_TYPE as '长度加类型' FROM informat ...
- 深入浅出OOP(六): 理解C#的Enums
MSDN定义:枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法. 例如,假设您必须定义一个变量,该变量的值表示一周中的一天. 该变量只能存储七个有意义的值. 若要定义这 ...
- C++ Primer 变量和基本类型
<C++ Primer 4th>读书摘要 基本上所有的语言都要提供下列特征: • 内置数据类型,如整型.字符型等. • 表达式和语句:表达式和语句用于操纵上述类型的值. • 变量:程序员可 ...
- Emmet语法预览
Emmet 是一个能提高前端开发效率的编辑器插件,支持 Sublime,Atom,TextMate,Nodepad++ 等主流编辑器.Emmet 定义了一些缩写,当我们输入缩写代码后,按展开键(默认是 ...
- js程序设计03——面向对象
ECMAScript中有2中属性:数据属性.访问器属性. 数据属性是为了指定某对象的指定key上的一些行为,比如value是否可删除.修改.key可循环遍历等特点.而访问器属性不包含数据值,包含一堆g ...