![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【SQL 编程&商务智能BI】
文章平均质量分 67
LongRui888
龙腾虎跃,睿意进取,加油!
展开
-
SQL Server获取表的元数据
最近客户需要数据库中表的数据字典,也就是需要表名、列名、列的数据类型及长度等信息。通过下面的sql,可以抓取到表的这些基本信息,注意 不包含视图的信息:SELECT D.NAME AS TABLE_NAME, A.column_id , A.NAME AS COLUMN_NAME, CASE WHEN A.IS_IDENTITY=1 THEN '√ ' ELSE '' END AS IS_IDENTITY, isnull(CASE WHEN x.is_primary_key=1 and原创 2020-11-10 11:44:05 · 1006 阅读 · 0 评论 -
SQL编程:合并字符串不求人 ---> group_concat函数就能行
1、表结构create table tt(id int,v varchar(30));insert into tt values(1,'a'),(1,'b'),(2,'b'),(2,'c'),(2,'b'),(2,'a'),(3,'a');mysql> select * from tt;+------+------+| id | v |+------+------+| 1原创 2016-05-17 14:15:55 · 3980 阅读 · 0 评论 -
SQL常用日期函数
1、基本函数SELECT CURDATE(), --当前日期 CURTIME(), --当前时间 NOW(), --当前日期+时间 SYSDATE()2、获取 日期、时间的特定部分 SELECT YEAR(NOW()), -- 年 MONTHNAME(NOW()), --原创 2016-06-24 18:30:25 · 2776 阅读 · 0 评论 -
在SQL Server中获取类似于Oracle中的rowid
在ORACLE中有一个伪列就是rowid,是唯一标识一条记录的id,通过解析可以显示这个记录所在的文件id、页id、行id。其实,在SQL Server中也有类似的RID。通过未记录文档的值%%physloc%%,可以返回结果行中的物理位置,通过未记载文档的函数sys.fn_PhysLocFormatter,把这个物理值转化为一个更易于理解的id,也就是(文件id:页id:行id)。原创 2016-05-26 13:18:08 · 9720 阅读 · 0 评论 -
【SQL 编程你也行】SQL Server新功能之函数:count函数(2012、2014的over partition by order by rows/range between)
在2012、2014中除了提供,over partition by order by之外,还提供了 rows/range关键字,能够取出窗口的数据。rows 和 range:rows表示 行,就是前n行,后n行而range表示的是 具体的值,比这个值小n的行,比这个值大n的行current row 当前行unbounded following 最后1行un原创 2016-01-11 16:00:42 · 5716 阅读 · 0 评论 -
SQL Server中以星期一为每周第一天 计算周数
SQLServer中以星期一为每周第一天 计算周数,但是在网上搜了,看了一些,比如如下的文章:把星期一作为每个星期的开始在一年中求取周数写的都挺复杂,一堆的sql代码,但是实际运行了一下,都是不对的。。。比如下面是摘自网上的代码:DECLARE @DATE DATETIME = '2012-01-29'DECLARE @FIRST_DATE_OF_YEAR DATETIME原创 2016-11-08 11:43:12 · 9204 阅读 · 8 评论 -
工资计算(用SQL来计算)
工资计算的公式是:税金 = (工资 - 社保公积金 - 3500)*0.25 - 1005税后 = 工资 - 社保公积金 - ((工资-社保公积金-3500)*0.25-1005) = 工资 - 社保公积金 - 税金这里的0.25,1005,是根据 工资 - 社保公积金 - 3500 之后得到的值,查询速扣表得到的,这里的3500是个税起征点。原创 2017-04-12 11:09:00 · 10849 阅读 · 0 评论 -
SQL Server2016新特性(2):时态表 Temporal Table
SQL Server 2016 引入了对版本由系统控制的临时表的支持,其附带的内置支持可以提供表中存储的数据在任意时间点的相关信息,而不仅仅是数据在当前时刻正确的信息。 临时表是 ANSI SQL 2011 中引入的数据库功能。版本由系统控制的临时表是用户表的一种类型,旨在保留完整的数据更改历史记录,并实现轻松的时间点分析。 这种类型的临时表之所以称为版本由系统控制的临时表,是因为每一行的有效原创 2018-01-24 10:25:48 · 2769 阅读 · 0 评论 -
SQL Server 2016新增:string_split函数(拆分字符串)
SQL Server 2016新增了string_split函数,专门用来拆分字符串。之前,在开发中经常会有拆分字符串的需求,要么用xml来实现, 要么写个自定义函数来实现。所以,期盼了很久,总算有这个函数了,必须要SQL Server开发组点个赞。希望以后还能有个string_join函数(名称类似python中的字符串合并函数join),专门用来合并字符串,而非用xml path,原创 2018-01-28 16:36:35 · 59653 阅读 · 7 评论 -
SQL编程:模糊表关联不求人 ---> concat + like就能行
1、表的结构:create table A(proj_dept varchar(30));create table B(dept_id int,dept_name varchar(30));insert into A values('2,3,4'),('2,4,5'),('3,4,6');insert into B values(2,'部门2'),(3,'部门3'),(原创 2016-05-17 14:18:40 · 7956 阅读 · 0 评论 -
SQL中的NULL函数:isnull、ifnull、nullif、coalesce
1、isnull(xx):是否是null,类似于is nullmysql> set @v = 'a';Query OK, 0 rows affected (0.03 sec)mysql> select isnull(@v);+------------+| isnull(@v) |+------------+| 0 |+------------+1 row in set (0原创 2016-05-17 14:06:10 · 2368 阅读 · 0 评论 -
SQL实现分组排序编号(rownumber+over的替代办法)
今天看到论坛有人提问:按规律自动生成序号要实现的效果如下:1、建表语句、插入数据:CREATE TABLE tb(pz NVARCHAR(10),jzyf DATE);INSERT INTO tbSELECT '毛笔','2014-05-03' UNION ALLSELECT '毛笔','2014-12-08' UNION ALLSELECT '毛笔','2014原创 2016-10-21 11:27:45 · 5106 阅读 · 0 评论 -
论坛上看到的6个数据库面试题
原帖链接:http://topic.csdn.net/u/20120730/15/b682aa5b-1672-4a90-b6c7-91430313eb2f.html?seed=856407833&r=79268448#r_79268448 1,建立索引一定会减少查询时间吗?也就是提高查询效率2,一个系统,你使用了一年后,系统响应突然变慢了,请分析变慢的原因3,有一个很大的表,建原创 2013-11-11 10:09:05 · 2241 阅读 · 4 评论 -
【SQL Server学习笔记】Delete 语句、Output 子句、Merge语句
DELETE语句 --1.当delete语句要关联其他表时与update语句类似,可参考上面update语句的写法--2.truncate table语句删除行比delete快很多,不过必须一次删除所有的行(没有where子句)--之所以快是因为记录的日志很少,采用表级别锁。--如果表中有IDENTITY列,会被重置原创 2013-10-14 12:16:52 · 2711 阅读 · 0 评论 -
【Transact-SQL】让人快遗忘的游标
最初学SQL Server的时候,当学到游标的时候,突然有了一种亲切感,因为这种通过一个while循环,一条一条的处理数据的方式,很像学过的过程式语言,与C语言很相似。慢慢的,对一些稍微复杂一点的SQL ,往往就会想到用游标去处理。也正是因为大量使用,渐渐的,在使用的过程中,也真正体会到了游标的低效,一条一条的处理方式,在数据量很小的情况下还可以,当数据一旦很多,而处理过程又非常复杂时,往往速原创 2013-10-12 21:38:16 · 1559 阅读 · 0 评论 -
执行ssis的包报错:找不到连接“”。如果找不到特定的连接元素,Connections 集合将发生此错误
执行ssis的包报错:找不到连接“”。如果找不到特定的连接元素,Connections 集合将发生此错误。在网上搜了一下,解决方法:打开SqlServer Configuration Manage右键单击“Sql Server Integration Services”选择“属性”,将登录身份修改为“Local System(本地系统)”,然后重新启动该服务。但原创 2014-04-26 21:58:45 · 9154 阅读 · 2 评论 -
【SQL Server 2008商务智能BI】数据挖掘导论
数据挖掘到底是什么呢?显然数据挖掘不是变魔术,数据挖掘是 使用复杂的数学算法,使我们能够运用计算机强大的计算能力对大量细节数据进行筛查、梳理,找出一些有意义的信息,发现数据中的模式、相关性和聚类。同时它也让我们摆脱了手工进行这种数字运算的劳累工作。而我们为什么又要去了解它呢?关系数据库系统擅长记录日常的数据,积累了大量的数据。而多维数据系统通过聚合对数据进行汇总,但由于原创 2015-04-25 22:19:30 · 1861 阅读 · 0 评论 -
【SQL 编程你也行】SQL Server新功能之函数:count函数(2012、2014的over partition by order by)
上一篇我们讲了count聚合函数的基本功能,以及在2005、2008版本中新增的over partition by来实现分组计数的功能。在SQL Server 2012、2014中进一步加强了count的功能,使得count在配合over时,一共有3种用法。1、count(*) over(partition by 分组字段 )这种用法在上一篇中已将讲过,是2005、20原创 2016-01-11 14:02:28 · 6799 阅读 · 0 评论 -
SQL行转列
比如有 A B 表A 表ID,NAME1,A2,B3,CB 表FK_ID,TYPE,VALUE1,VALUE21,cpu,100,901,mem,90,892,cpu,20,222,mem,100,993,cpu,90,603,mem,20,20求这样的结果A_ID,A_NAME,A_CPU_RECORD,A_MEM_RECORD原创 2016-11-10 18:33:35 · 652 阅读 · 0 评论 -
SQL SERVER 正则替换
原文链接:http://blog.csdn.net/maco_wang/article/details/7390212RegExp对象提供简单的正则表达式支持功能:1.Global属性设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。 语法: object.Global [= True | False ]转载 2013-02-04 14:18:04 · 3433 阅读 · 0 评论 -
SQL Server2016新特性(3):把数据转成JSON格式
SQL Server 2016 针对导入和导出 JSON 以及处理 JSON 字符串添加了内置支持,本文主要讲如何把数据转成json格式。一、建表创建tb_emp、tb_org两个表,插入数据。CREATE TABLE tb_emp(emp_id INT NOT NULL PRIMARY KEY CLUSTERED,emp_name VARCHAR(20),)I原创 2018-01-24 10:25:54 · 4806 阅读 · 1 评论 -
python中pandas模块(merge方法)实现SQL Server中的表关联join
python连接sql server的方法,可以参考这篇文章:python连接SQL Server:Pymssql模块基于下面的数据,分别用sql 和 python,实现数据集的关联,得到 学生、课程、成绩 的数据。建表--学生 CREATE TABLE student ( sid INT , sname NVARCHAR(32原创 2018-02-03 09:42:13 · 1850 阅读 · 0 评论 -
数据仓库之抽取数据:通过bcp命令行导入数据
在做数据仓库时,最重要的就是ETL的开发,而在ETL开发中的第一步,就是要从原OLTP系统中抽取数据到过渡区中,再对这个过渡区中的数据进行转换,最后把经过处理的干净的数据加载到数据仓库中。 目标数据库是sql server,通过bcp命令行导入数据。bcp方式相对于其他方式来说,速度更快,是做了优化的。以下为bcp命令行常用的参数,注意大小写: -c 以char作为存储类...原创 2019-01-30 14:05:07 · 877 阅读 · 0 评论 -
数据仓库之抽取数据:openrowset函数带bulk操作符的用法
在做数据仓库时,最重要的就是ETL的开发,而在ETL开发中的第一步,就是要从原OLTP系统中抽取数据到过渡区中,再对这个过渡区中的数据进行转换,最后把经过处理的干净的数据加载到数据仓库中。 目标数据库是sql server,通过openrowset函数带bulk操作符的用法,导入、导出、更新数据。带bulk操作符的方式相对于其他方式来说,速度更快。使用方法:第1种用法:...原创 2019-01-30 14:11:47 · 2049 阅读 · 0 评论 -
数据仓库之抽取数据:通过openrowset执行存储过程
在做数据仓库时,最重要的就是ETL的开发,而在ETL开发中的第一步,就是要从原OLTP系统中抽取数据到过渡区中,再对这个过渡区中的数据进行转换,最后把经过处理的干净的数据加载到数据仓库中。 目标数据库是sql server,通过openrowset函数调用存储过程,但是存储过程中不能带参数。 1、开启即席查询--修改高级参数sp_configure 'show adv...原创 2019-01-30 14:16:59 · 1461 阅读 · 0 评论 -
SQL Server系统函数:系统信息函数
1、会话id,服务器信息、用户信息select @@SPID, --返回当前连接的会话ID:SPID @@servername, --SQL Server实例名称 @@sevicename, --SQL Server版本信息 APP_NAME(), --客户端连接的应用程序名称 HOST_ID(), ...原创 2019-01-30 14:40:58 · 775 阅读 · 0 评论 -
SQL Server系统函数:字符串函数
1、字符转化为ASCII,把ASCII转化为字符,注意返回的值是十进制数select ASCII('A'),ASCII('B'),ASCII('a'),ASCII('b'),ASCII('?')select CHAR(65),CHAR(66),CHAR(97),CHAR(98),CHAR(63)2、unicode字符转化为整数,把整数转化为unicode字符select...原创 2019-01-30 14:54:01 · 754 阅读 · 0 评论 -
SQL Server系统函数:日期函数
1、返回当前日期和时间select GETDATE() '当前日期-精确到33毫秒'select GETUTCDATE() 'UTC日期和时间-精确到33毫秒'select SYSDATETIME() '当前日期和时间-精确到100纳秒(高精度)' select SYSUTCDATETIME() 'UTC-精确到100纳秒(...原创 2019-01-31 09:59:58 · 1382 阅读 · 0 评论 -
SQL Server系统函数:元数据函数
1、列的长度、列名--列的长度select COL_LENGTH('dbo.wct', --表名 'wcid') --列名--列名select COL_NAME(object_id('dbo.wct'), --表ID 1) --列IDcolumnPrope...原创 2019-01-31 10:00:07 · 662 阅读 · 0 评论 -
SQL Server系统函数:类型转换函数
1.基本的转化SELECT CAST(2008 as varchar(4)) + ' year!'SELECT CONVERT(varchar(4),2008) + ' year!'2、 把日期转化为文本SELECT CONVERT(VARCHAR(30),GETDATE(),120) --年-月-日 时:分:秒(24h)SELECT CONVERT(VARCHA...原创 2019-01-31 10:00:16 · 6022 阅读 · 0 评论 -
数据仓库之抽取数据:通过链接服务器获取Access中的数据
在做数据仓库时,最重要的就是ETL的开发,而在ETL开发中的第一步,就是要从原OLTP系统中抽取数据到过渡区中,再对这个过渡区中的数据进行转换,最后把经过处理的干净的数据加载到数据仓库中。 目标数据库是sql server,现在要从 Access中抽取数据。1、开启即席查询--修改高级参数sp_configure 'show advanced options',1go...原创 2019-01-30 13:58:01 · 706 阅读 · 0 评论 -
数据仓库之抽取数据:通过链接服务器获取txt、csv中的数据
在做数据仓库时,最重要的就是ETL的开发,而在ETL开发中的第一步,就是要从原OLTP系统中抽取数据到过渡区中,再对这个过渡区中的数据进行转换,最后把经过处理的干净的数据加载到数据仓库中。 目标数据库是sql server,现在要从txt、csv文件中抽取数据。1、开启即席查询--修改高级参数sp_configure 'show advanced options',1g...原创 2019-01-30 13:54:26 · 1095 阅读 · 0 评论 -
python中pandas模块实现SQL Server中的select
python连接sql server的方法,可以参考这篇文章:python连接SQL Server:Pymssql模块基于下面的数据,分别用sql 和 python,实现数据集的关联,得到 学生、课程、成绩 的数据。建表可以参考:python中pandas的集合关联(merge) 与SQL Server中表关联join的对比(1)SQL Server中的se原创 2018-02-03 21:42:00 · 3332 阅读 · 0 评论 -
SQL Server 2017新增:Translate 函数(实现批量替换)
SQL Server 2017新增 Translate 函数,可以实现批量替换。语法如下:TRANSLATE ( 输入字符串, 要替换的字符, 替换成的字符) 也就是把输入字符串中的 要进行替换的字符,替换为其他字符。比如,现在有个字符串: 123#456*789!/0,要把其中的# * ! / 替换掉,如果用replace函数来做:declare @v var原创 2018-01-29 14:39:56 · 3499 阅读 · 2 评论 -
SQL Server 2017新增:string_agg函数(分组合并字符串)
SQL Server 2017新增了 string_agg函数,可以轻松实现分组合并字符串,而不是用xml path,或者写个自定义 函数来实现。语法:STRING_AGG ( expression, separator ) [ ] ::= WITHIN GROUP ( ORDER BY [ ASC | DESC ] ) 有2个参数,第1个是要合原创 2018-01-29 15:10:11 · 17421 阅读 · 6 评论 -
SQL Server 2017新增:trim函数(移除左右空格、指定字符)
SQL Server 2017新增了 trim函数,实现移除左右两侧的空格,以及删除左右两侧指定字符。语法:TRIM ( [ characters FROM ] string ) 默认参数是 string 字符串,前面的characters from 一起用,表示要从string字符串的左右两侧,去掉的字符。(1)移除左右的空格SELECT tri原创 2018-01-29 15:31:50 · 9406 阅读 · 0 评论 -
【SQL Server学习笔记】SQL Server系统函数
SQL Server的系统函数,可以让我们实现聚合、数学运算、字符串操作、日期运算、NULL的处理、排序等功能。需要注意的是SQL Server的系统函数和用户自定义函数是不同的,系统函数是SQL Server内部支持的函数,不需要我们先定义,再使用。我们通过Microsoft SQL Server Management Studio客户端工具,可以看到SQL Server提供的系统...原创 2012-08-01 17:30:18 · 4693 阅读 · 1 评论 -
数据仓库之抽取数据:通过链接服务器获取SQL Server数据
在做数据仓库时,最重要的就是ETL的开发,而在ETL开发中的第一步,就是要从原OLTP系统中抽取数据到过渡区中,再对这个过渡区中的数据进行转换,最后把经过处理的干净的数据加载到数据仓库中。 目标数据库是sql server,现在要从同为sql server的数据源,抽取数据。步骤如下: 1、开启即席查询--修改高级参数sp_configure 'show adva...原创 2019-01-30 13:26:17 · 1730 阅读 · 0 评论 -
数据仓库之抽取数据:通过链接服务器获取Oracle数据
在做数据仓库时,最重要的就是ETL的开发,而在ETL开发中的第一步,就是要从原OLTP系统中抽取数据到过渡区中,再对这个过渡区中的数据进行转换,最后把经过处理的干净的数据加载到数据仓库中。 目标数据库是sql server,现在要从异构的Oracle数据库中抽取数据。步骤如下: 1、开启即席查询--修改高级参数sp_configure 'show advanced...原创 2019-01-30 13:34:38 · 1502 阅读 · 0 评论 -
数据仓库之抽取数据:通过链接服务器获取Excel中的数据
在做数据仓库时,最重要的就是ETL的开发,而在ETL开发中的第一步,就是要从原OLTP系统中抽取数据到过渡区中,再对这个过渡区中的数据进行转换,最后把经过处理的干净的数据加载到数据仓库中。 目标数据库是sql server,现在要从Excel文件中抽取数据。但在实际操作中,需要注意以下几点:(1)很难从显示的错来知道:openrowset,opendatasource这两个函...原创 2019-01-30 13:43:27 · 995 阅读 · 0 评论