sql server 语句

1.with as 用法

1 with temp
2 as
3 (
4 select a.* from [dbo].[erdos_tradepave] a join [dbo].[erdos_checkin] b on a.pk_checkin = b.pk_checkin
5 where b.isback=‘N‘ and b.isexchange =‘Y‘ )
6
7 select * from [dbo].[erdos_tradepave] e where
8 [PK_TRADEPAVE] in (select c.[PK_TRADEPAVE] from [dbo].[erdos_tradepave] c left join [dbo].[erdos_checkin] d on c.pk_checkin = d.pk_checkin

2.with as 多个表

with temp
as
(
select a.* from [dbo].[erdos_tradepave] a join [dbo].[erdos_checkin] b on a.pk_checkin = b.pk_checkin
where b.isback=‘N‘ and b.isexchange =‘Y‘ ),

temp1
as
(
select * from [dbo].[erdos_tradepave] e where
[PK_TRADEPAVE] in (select c.[PK_TRADEPAVE] from [dbo].[erdos_tradepave] c left join [dbo].[erdos_checkin] d on c.pk_checkin = d.pk_checkin)

select * from temp1

3.将一个表的信息插入新表

insert into [Accommodation].[dbo].[CheckIn]([Cid],[OrderCode],[Name],[Sex],[IdCard],[PhoneNo],[FeeScaleCid],[Fee],[RoomCid],[CheckInDateTime])select a.[Cid],a.[VBILLNO],a.[NAME],1,a.[ID],isnull(a.[CONTACTTYPE],‘‘),b.[Cid],b.[FeeValue],c.[Cid],a.[INDATE] from
[Erdos].[dbo].[erdos_checkin] a left join [Accommodation].[dbo].[FeeScale] b on b.[FeeValue]=a.[ACCOMMODATIONCOST] left join [Erdos].[dbo].[erdos_dormdoc] c on c.[PK_DORMDOC]=a.[PK_DORMDOC] where a.[DR]=0 and b.[FeeType]=1 and a.[NAME] is not null;

4.update与join联合使用

update a set a.[Sex]=0 from [Accommodation].[dbo].[CheckIn] a left join [Erdos].[dbo].[erdos_checkin] b on b.Cid=a.Cid where b.[SEX]=1;

5.判断数据库表中是否包含某些字符,用charindex判断

update a set a.DormCategoryCid=ISNULL(c.Cid,‘D4CD56C7-E861-4EA4-886F-E4ED47BC73BF‘)
from [Erdos].[dbo].[erdos_dormclass] a left join [Erdos].[dbo].[erdos_dormclass] b on b.PK_DORMCLASS=a.PK_DORMCLASSF left join [Accommodation].[dbo].[DormCategory] c on CHARINDEX(c.CategoryName,b.DORMCLASSNAME)>0  where CHARINDEX(‘专家‘,a.DORMCLASSNAME)=0 and CHARINDEX(‘女生‘,a.DORMCLASSNAME)=0 and CHARINDEX(‘男生‘,a.DORMCLASSNAME)=0 and a.ILEVEL=3 and a.DR=0;

charindex(要查是否包含的内容,字段名):=0表示不包含,>0表示包含

6.case when 用法

insert  into Accommodation.dbo.Change(Cid,checkincid,fee,PhoneNo,Reason,IdCard,GroupCid,IsCash,CashEndTime,Name
,CorpCid,DepartmentCid,RoomCid,Post,ChangeDateTime,Sex,groupname,corpname,department,[status])
select NEWID(),b.cid,a.accommodationcost,a.contacttype,a.hpreason,a.id,a.industrial_group,case  a.ISXJFLAG when  ‘Y‘ then 1 else 0 end ,a.jfenddate,a.NAME
,a.pk_corp,a.pk_deptdoc,c.cid,a.pk_om_job,a.TPDATE,a.SEX,d.CHARGEDEPTNAME,d.UNITNAME,e.deptname,a.[Status]
 from dbo.erdos_tradepave a left join dbo.erdos_checkin b on
a.pk_tradepave=b.pk_tradepave left join dbo.erdos_dormdoc c on a.pk_dormdocnew=c.PK_DORMDOC
left join dbo.bd_corp d on a.pk_corp = d.pk_corp
left join [dbo].[bd_deptdoc] e on a.pk_deptdoc=e.pk_deptdoc
 where a.DR=0
 and b.Cid is not null and a.NAME is not null ;

case+字段名+when+判断值+then 相等改变成的值 else 不等时改变成的值

时间: 2024-09-28 14:53:56

sql server 语句的相关文章

Sql Server 语句随笔

例1 对于两个或更多的销售员的销售点,计算其中所有销售员的总销售目标值和销售员金额. select city,sum(QUOTA),sum(SALESREPS.SALES) from OFFICE,SALESREPS group by CITY having count(*)>=2 例2 (1) 单行insert语句 单行insert语句用于向一关系表中添加一行新数据.其使用格式如下: insert into <表名> (列名列表) values (列值列表) (2) 多行insert语

Sql Server语句大全

T-SQL语句大全 --跳转到SQL myDemo USE [SQL myDemo] go --声明变量id declare @id int --为变量赋值:直接赋值 set @id = 2 --将cid为3的cname值赋给变量@cn declare @cn varchar(10) --为变量赋值:查询赋值 select @cn = cname from classes where Cid = @id --输出[print:可直接输出'字符串'或变量]变量@cn if{} ===>if beg

Oracle、Mysql、Sql Server语句的区别

1.空值的处理——判断是否为空,为空时取一个值,不为空时取另一个值 1).Sql Server 中 ISNULL(check_expression,replacement_value) 解释:如果check_expression值为空,则返回replacement_value,否则直接返回check_expression的值 2).Mysql IFNULL(expr1.expr2) 解释:如果值expr1值为空,则返回expr2,否则直接返回expr1的值 3).Oracle NVL(expr1

基本的SQL Server 语句,包含 增、删、改、查 程序员必会

这是我以前学习时, 整理的一套基础SQL Server增.删.改.查 等语句 ,初学者可以从上往下学完. 也方便自己忘记时翻看! create database SQLschool go --批 go use SQLschool go -- --------------------------删除表----------------------------- select * from goods --全部删除 delete from goods --有条件的批量删除 delete from go

经典实用SQL Server语句大全总结(一)

简要介绍基础语句:1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始 备份BACKUP DATABASE pubs TO testBack4.说明:创建新表crea

SQL Server语句查询指定位置(经纬度)范围内信息

指定一个经纬度,给定一个范围值,查出在经纬度周围这个范围内距离最近的5组数据. 经度:116.312785纬度:39.929875范围:1度(111公里)LONG为数据表经度字段 LAT为数据表纬度字段 CENTER为数据表该语句在SQL Server下测试通过,其他数据库可能需要修改 SELECT TOP 5 *, ACOS( SIN( (39.929875 * PI()) / 180 ) * SIN( (LAT * PI()) / 180 ) COS( (39.929875 * PI())

SQL server 语句新建用户、对用户授权、删除用户实例

Grant select on tb to db_user --给db_user用户授权 tb表 查询权限 一.命令操作 USE mydb GO --1. 新建测试用户 --1.1 添加登录用户和密码 EXEC sp_addlogin N'tony','123' --1.2 使其成为当前数据库的合法用户 EXEC sp_grantdbaccess N'tony' --2.设置操作授权 --2.1 授予对自己数据库的所有权限 EXEC sp_addrolemember N'db_owner', N

SQL server语句测试

设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一~表(四)所示,数据如表1-2的表(一)~表(四)所示.用SQL语句创建四个表并完成相关题目. create database ceshigo use ceshigocreate table Student(Sno Char(3)primary key,Sname Char(8),Ssex Char(2),Sbirthday date

sql server 语句使用规范

Sql语句使用规范 规范内容以及注意事项: 1.查询时候使用top 10 /top 100 和where 字句控制每次执行SQL 返回的结果集合,在满足业务需求的同时返回最小的结果. 2.使用数据投影的方式,选择前端程序需要的数据列,不允许使用select * from dbo.TableA的方式访问数据库中的列. 如:select userid , username , sex from dbo.TableA 3.尽量使用存储过程访问数据库中的数据.减少直接使用SQL 脚本访问数据库资源. 4

vc++,MFC 中,用ado执行sql server语句时,并且对返回值真假判断的例子,即bool类型

MFC VC++ 中的对数据库中的表进行查询,判断SQL语句是否执行成功 若存在返回bool值true(1),若失败返回bool值false(0). 简单bool类型代码如下: CString sql,Result; sql.Format(_T("select * from [dbo].[%s]"), Name);// Name是所要查找数据库中表的名字 BOOL bool_temp = TheAdoData.ExecuteSQL((_bstr_t)sql);//判断上一条SQL语句是