8
推荐
3367
阅读
MSSQL 基础之逐行累计
前言昨天一位群友提到这样一个问题:源数据如下图,仅有条码和销售金额两列。第一步要算出累计权重,第二步要算出商品排名。累计权重:条码1 累计权重=条码1销售额/所有条码销售额条码2 累计权重=条码1+条码2销售额/所有条码销售额依次类推商品排名:累计权重<50%属于a累计权重 >=50%,<=80% b累计权重 >80% ...
3
推荐
2807
阅读
MSSQL 基础之数据按数量分组汇总
引言前段时间同事在项目中遇到这样一个问题:有一张表需要对数据做分组统计,这完全没有问题。但是汇总的时候要求记录数超过450的数据,要按450为一组聚合。举个例子:假设有个分组有901条数据,则需要450条一组、450条一组、1条一组,划分成3个组。最初是使用游标来完成的,但是这个存储过程的调用频率实在太高,经常会...
2
推荐
2565
阅读
MSSQL 基础之Outer Join 误区
引言T-SQL查询中一个非常重要的知识点就是多表连接查询。其中outer join对数据的处理特别的有意思,很多人对此的理想也存在着一些误区。关于误区1我一直是知道的,而误区2却是在近期的课程分享中发现的。做一个快乐的分享者,分享的过程亦是不断自我完善的过程。认为左连接(left join)的结果集记录数等于左表记录数的...
3
推荐
2603
阅读
MSSQL 基础之数据库分页
引言不论什么数据库,一遇到信息化管理系统,总避不开一个话题:数据分页。数据分页显示,随着信息化进程的发展,数据量的猛增,用户体检的重视,早已成为了一个常识性的事情。各数据库厂商也是逐步的在数据分页方面做着自己的努力和改变。今天我们就概述下SQL SERVER数据库分页的几个阶段,着重介绍下SQL SERVER2012新...
3
推荐
3169
阅读
MSSQL 基础之无限父子级数据拉平
引言今天学员群有位亲遇到这样一个问题:父子级省市数据希望能够拉平成省、市、县、镇。父子级这种问题,解决之道通常就是递归。之前可能需要游标或者嵌套循环来解决,现在MSSQL提供了CTE这个强大的东东,支持递归查询。万民之福啊!!!知识点公用表表达式(Common Table Expression) CTE:是SQL SERVER 2005版本...
2
推荐
3141
阅读
MSSQL 基础之CTE递归显示级别
引言今天有群友问到一个问题,父子结构的数据表,如何展示所有数据?我很自然的想到了使用CTE递归。接着他又提出一个新的问题:能不能显示出级别?大脑检索了半天,没有这方面的思路,因为之前的表结构里通常是会存储这个级别的。但是现在没有,怎么办,有没有办法实现?知识点CTE表,(Common Table Expression)是SQL ...
2
推荐
3348
阅读
MSSQL 基础之批量替换存储过程中的表名
引言前几天有一位网友求助:由于业务变化他们修改了数据库中一个表的表名。但是数据库中有N多个存储过程引用了这个表。那么现在问题来了,这些存储过程都需要做相应的调整。有没有一种简单的办法能够像批量替换文件内容一样批量存储过程中的表名呢?很多的网友建议:利用导出脚本功能,将所有存储过程的脚本导出,以文件...
3
推荐
3449
阅读
MSSQL 基础之以字符分隔的字符串匹配
引言今天在SQL Server技术群里,有一位群友问到这样一个问题:表中某列数据如下图,希望能够提取值为7的记录。几经沟通之后发现,真实的需求是:希望用 SQL 将一个字段内用逗号分隔的内容分成多条记录,然后取值为7的记录。有时候我们在设置数据库的时候,基于查询和业务的考虑会将数据以符号分隔的方式存储...
2
推荐
3042
阅读
MSSQL 基础之善用Char类型
引言今天为什么要开题来说Char类型呢?在近几天的社区问题中发现,有些朋友对char、varchar、nvarchar这几种字符类型的特性还不是很清楚。以至在实际的使用中,不可避免的产生了一些问题。类型介绍char类型char(n)类型,长度是固定,索引效率高,n介于1-8000之间的数据。假设为char(10)的变量存储一个"abc"字符串,那么...
2
推荐
2920
阅读
MSSQL 基础之补全日期
今天在技术群,有位群友提到一个关于T-SQL查询的需求,在此权当分享记录。需求:在数据库有如下数据:希望把缺失的日期都补上,然后补上的S列值取前一列的值 /7,即2012-12-04 -- 2012-12-10 的S列值为:1058.142856556400/7,日期的特点是:两个日期间隔7天。补全的数据如下:补全日期简单,可以使用spt_values表...
1
推荐
2700
阅读
MSSQL 基础之返回标识列新增值
1、@@IDENTITY函数可以返回所有范围内当前连接插入最后所生成的标识值(包括任何调用的存储过程和触发器)。这个函数不止可以适用于表。函数返回的值是最后表插入行生成的标识值。2、SCOPE_IDENTITY()函数跟上一个函数几乎是一摸一样的,不同的地方:即前者返回的值只限于当前范围(即执行中的存储过程)。3、IDENT_CURRENT...