SQL Server常用语句

摘要:
用一条SQL语句显示所有的比赛组合。

1. 修改某列的字符集

tinyint,int,double,decimal,datetime都不支持字符集变更

ALTER TABLE TableName ALTER COLUMN ColumnName [varchar](30) COLLATE Chinese_PRC_CS_AS  

2.不同字符集间比较

可以只在一列上使用Collate,保证和另一列的字符集一致

Select * 
FromTableA A,TableB B
Where A.No Collate Chinese_PRC_CS_AS = B.No Collate Chinese_PRC_CS_AS

3.将多行的某列合并

表结构和数据如下

Create Table#TempTable
(
Id int,
[Description] varchar(50)
)
Insert#TempTable(Id,Description)
Select 1,'1.1' Union All
Select 1,'1.2' Union All
Select 2,'2.1' Union All
Select 2,'2.2' Union All
Select 2,'2.3'
Select * From #TempTable

SQL Server常用语句第1张

  3.1 输出结果

  SQL Server常用语句第2张

  3.2更新表

  SQL Server常用语句第3张

3.3按组合并查询

SQL Server常用语句第4张

SQL Stuff语法

STUFF ( character_expression , start , length ,character_expression )

以下示例在第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串

SELECT STUFF('abcdef', 2, 3, 'ijklmn')
--运行结果
aijklmnef

SQL Coalesce语法

COALESCE ( expression [ ,...n ] ) 返回其参数中第一个非空表达式。

Select COALESCE(Null,100,Null,200)
--运行结果
100

SQL For XML用法

SQL Server常用语句第5张

4. 用一条SQL语句查询所有StandardCost都不小10的ProductID

SQL Server常用语句第6张

Select Distinct ProductID FromProduction.ProductCostHistory
Where ProductID Not In(Select ProductID From Production.ProductCostHistory Where StandardCost < 10)
--Or
Select Distinct ProductID FromProduction.ProductCostHistory
Where ProductID Not In(Select ProductID Where StandardCost < 10)

5. 删除除了自动编号Id不一样的,所有其他信息都一样的纪录

SQL Server常用语句第7张

Delete From TableName Where Id Not In(Select Min(Id) From TableName Group By No,Name,CourseId,CourseName,Score)

6. 某表中只有字段Name,一共有4条纪录a,b,c,d,代表4个球队,没2个球队都要进行比赛。用一条SQL语句显示所有的比赛组合。

SQL Server常用语句第8张

SelectA.Name,B.Name FromTableName A, TableName B Where A.Name < B.Name

7. 一百个账户各有100$,某个账户某天如有支出则添加一条新记录,记录其余额。一百天后,请输出每天所有账户的余额信息

 这个问题的难点在于每个用户在某天可能有多条纪录,也可能一条纪录也没有(不包括第一天)

  返回的记录集是一个100天*100个用户的纪录集

cAccount代表帐户,dDate代表日期,iCash代表余额

思路:首先构建100天*100个帐号的纪录集,然后根据日期和帐号获取该帐号该日期的最小余额

Select A.dDate,B.cAccount,(Select Min(iCash) From T_Amount Where cAccount = B.cAccount And dDate <=A.dDate)
From(Select Distinct dDate FromT_Amount) A,
(Select Distinct cAccount FromT_Amount) B
Order By A.dDate,B.cAccount

上面的代码还是有问题,如在某一天,所有帐号都没有消费纪录,则该天的纪录不会被统计出来,解决办法,通过其他方式获得日期集合,如假设这100天是由2016.01.01到2016.04.09

Select Dateadd(Day, number - 1, '2016-01-01') AsdDate
FromMaster.dbo.spt_values
Where Type='P' and number <= datediff(day, '2016-01-01','2016-04-09') + 1
and number>0

合并后的代码为

Select A.dDate,B.cAccount,(Select Min(iCash) From T_Amount Where cAccount = B.cAccount And dDate <=A.dDate)
From(
    Select Dateadd(Day, number - 1, '2016-01-01') AsdDate
    FromMaster.dbo.spt_values
    Where Type='P' and number <= datediff(day, '2016-01-01','2016-04-09') + 1
    and number>0) A,
(Select Distinct cAccount FromT_Amount) B
Order By A.dDate,B.cAccount

免责声明:文章转载自《SQL Server常用语句》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇结构化方法与面向对象方法的比较linux新装系统初始化下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【转】Deadlock的一些总结(死锁分析及处理)

1.1.1 摘要       在系统设计过程中,系统的稳定性、响应速度和读写速度至关重要,就像12306.cn那样,当然我们可以通过提高系统并发能力来提高系统性能总体性能,但在并发作用下也会出现一些问题,例如死锁。      今天的博文将着重介绍死锁的原因和解决方法。 1.1.2 正文       定义:       死锁是由于并发进程只能按互斥方式访问临...

SQL SERVER的锁机制(三)——概述(锁与事务隔离级别)

五、锁与事务隔离级别 事务隔离级别简单的说,就是当激活事务时,控制事务内因SQL语句产生的锁定需要保留多入,影响范围多大,以防止多人访问时,在事务内发生数据查询的错误。设置事务隔离级别将影响整条连接。 SQL Server 数据库引擎支持所有这些隔离级别: · 未提交读(隔离事务的最低级别,只能保证不读取物理上损坏的数据) · 已提交读(数据库引擎的默认级...

4、MySQL 申明变量给查询数据编号

摘自:   https://www.cnblogs.com/qixuejia/archive/2010/12/21/1913203.html   https://blog.csdn.net/arbben/article/details/78665389 1、mysql中变量不用事前申明,在用的时候直接用“@变量名”使用就可以了。    mysql定义用户变...

oracle 内置函数

oracle内置函数分为单行函数和聚合函数两大类 1、to_date 将字符转换为日期 select to_date('2008-08-08','yyyy-mm-dd') from dual; --2008/8/8 2.add_months 增加月份 select add_months(sysdate,2) from dual; --当前时间向后推2个月,...

MYSQL 批量删除以特定前缀开头的表

前言 这是工作中确实会用到,比如分库分表后有t_order_01、t_order_02、t_order_03...t_order_08 这样的表。 测试过程中造了大量数据进行测试,其中可能含有部分脏数据,因此下一轮测试时最好把整个模块的数据进行删除。...

java框架之mybatis

一、简介 1、基本概念 mybatis 是一个半自动轻量级的一个 orm 框架 将 java 与 sql 分离,解决了 jdbc 的硬编码问题; sql 由开发人员控制,更加方便 sql 的修改调优; 2、入门程序 2.1 原始方法:通过 sqlsession 来操作数据库 建一个全局配置文件(mybatis-config.xml),配置数据源等运行...