1.查找表中行总数以及去重行数

SELECT COUNT (*) AS '总行数' ,(SELECT COUNT(*) FROM ( SELECT DISTINCT(字段) FROM  table)a) AS '去重行数'
FROM table

2.实现参数化的模糊查询(like,in怎么写?)

--方法一:
DECLARE @test nvarchar(100)
set @test='画'
set @test='%'+@test+'%'
select @testselect * from table where name like @test
--方法二:
DECLARE @test2 nvarchar(100)
set @test2='画'select * from table where name like '%'+@test2+'%'

3.sql数据库文件存放在哪

select filename from master.dbo.sysdatabases
where name='DataBaseName'

4.如何筛选出哪些人的次数不是从1开始
找到每个人的min(date)插入临时表,然后跟原表联合查询where date=min(date)and time <>1

5.判断字段中是否包含某些内容(CharIndex)
语法:
CHARINDEX ( expression1 , expression2 [ , start_location ] )
Expression1是要到expression2中寻找的字符串,start_location是CHARINDEX函数开始在expression2中找expression1的位置,默认从第一位开始。
这个函数将返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置,假如CharIndex没有找到要找的字符串,那么返回整数‘0’
用作条件的话,charindex(g.code,‘1,2,3’)=0等同于 not in(1,2,3),但是not in 返回的是0/1,charindex返回出现的位置

--用作条件的话,charindex(g.code,'1,2,3')=0等同于 not in(1,2,3),但是not in 返回的是0/1,charindex返回出现的位置
SELECT charindex(code,'1,2,3') FROM dbo.yz_supply_class

示例:

6.自增长列插入指定值

--需要指明要插入的标识列
SET IDENTITY_INSERT table ONINSERT INTO TABLE(id,name)
VALUES('2','测试')SET IDENTITY_INSERT table OFF

7.查到数据表中是否有对应的列,没有就新增

  if not exists(select * from syscolumns where id=object_id('tableName') and name='columnName')  alter table tableName add columnName  INT NULL

8.重命名列名

  IF  EXISTS(SELECT * FROM syscolumns WHERE id = OBJECT_ID('tableName') AND name = 'columnName' )  EXEC sp_rename '表名.原列名', '新列名' , 'COLUMN';

9.删除默认约束

--在SQLserver中判断指定列的默认值是否存在
if exists(select A.name as DefaultName,B.name as TableName from sysobjects A
INNER join sysobjects B on A.parent_obj = B.id where A.xtype = 'D' and B.xtype = 'U' and B.name = 'MessageInformation')
--因为不能直接修改默认值所以先删除默认值约束
alter table MessageInformation drop constraint DF_MessageInformation
GO
--重新添加新约束,并指定默认值
ALTER TABLE [dbo].[MessageInformation] ADD CONSTRAINT DF_MessageInformation DEFAULT  ((0)) FOR [Analysis]
GO

10.数值类型转换成字符类型并进行文字拼接

CAST(e.Volume as nvarchar(20)) + e.Unit+'/袋' as 规格

11.sql行转列,Max函数忽略NULL

SELECT c.Name,MAX(CASE WHEN a.ABO='A' THEN b.Name ELSE ''END) A,MAX(CASE WHEN a.ABO='B' THEN b.Name ELSE ''END) B,MAX(CASE WHEN a.ABO='O' THEN b.Name ELSE ''END) O,MAX(CASE WHEN a.ABO='AB' THEN b.Name ELSE ''END) ABFROM BasBloodLevel aLEFT JOIN  (SELECT Value,Name FROM dbo.SysEnum  WHERE Type='InvBloodLevel')b ON a.Value=b.ValueLEFT JOIN (SELECT Value,Name FROM dbo.SysEnum  WHERE Type='BasXyzl')c ON a.BasXyzl=c.ValueWHERE c.Value IN ('1','2')GROUP BY c.Name

12.统计年龄,将时间转换为年月日

(CASE WHEN ( CASE WHEN DATEADD(YEAR,DATEDIFF(YEAR, a.birth_date, a.admiss_date),a.birth_date) > a.admiss_dateTHEN DATEDIFF(YEAR, a.birth_date, a.admiss_date) - 1ELSE DATEDIFF(YEAR, a.birth_date, a.admiss_date) END ) >= 1THEN CONVERT(VARCHAR(5), ( CASE WHEN DATEADD(YEAR,DATEDIFF(YEAR,a.birth_date,a.admiss_date),a.birth_date) > a.admiss_dateTHEN DATEDIFF(YEAR, a.birth_date,a.admiss_date) - 1ELSE DATEDIFF(YEAR, a.birth_date,a.admiss_date)END )) + 'Y'ELSE CASE WHEN ( CASE WHEN DATEADD(MONTH,DATEDIFF(YEAR, a.birth_date,a.admiss_date),a.birth_date) > a.admiss_dateTHEN DATEDIFF(MONTH, a.birth_date,a.admiss_date) - 1ELSE DATEDIFF(MONTH, a.birth_date,a.admiss_date)END ) >= 1THEN CONVERT(VARCHAR(5), ( CASE WHEN DATEADD(MONTH, DATEDIFF(YEAR, a.birth_date,a.admiss_date),a.birth_date) > a.admiss_dateTHEN DATEDIFF(MONTH,a.birth_date,a.admiss_date) - 1ELSE DATEDIFF(MONTH,a.birth_date,a.admiss_date)END )) + 'M'ELSE CONVERT(VARCHAR(5), DATEDIFF(DAY, a.birth_date,a.admiss_date)) + 'D'ENDEND ) AS age

未完待续…

SQL 语句集合(行转列,参数化...)相关推荐

  1. Sql 语句收集——行转列

    SQL行转列汇总PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (- ...

  2. sql语句实现行转列的3种方法

    前言 一般在做数据统计的时候会用到行转列,假如要统计学生的成绩,数据库里查询出来的会是这样的,但这并不能达到想要的效果,所以要在查询的时候做一下处理. CREATE TABLE TestTable([ ...

  3. SQL语句实现行转列

    最近在维护一个项目,出现了一下bug需要进行调试,于是把正式库上面的代码搬到本地库上面,数据库是本地的,跑项目的时候调试发现代码里面带有wmsys.wm_concat函数的SQL语句出现错误,经排查发 ...

  4. sql语句集合里有集合_学习SQL:集合论

    sql语句集合里有集合 The set theory is very important in order to understand data and databases. While you co ...

  5. 一条SQL语句完成对一列关键词的匹配

    一条SQL语句完成对一列关键词的匹配 先放重点! 核心语句: select * from 表1 t1 join 表2 t2 on t1.待匹配字段 like concat( '%', t2.关键词列, ...

  6. SQL SERVER特殊行转列案列一则

    今天有个同事找我,他说他有个需求,需要进行行转列,但是又跟一般的行转列有些区别,具体需求如下所说,需要将表1的数据转换为表2的显示格式. 我想了一下,给出了一个解决方法,具体如下所示(先给出测试数据) ...

  7. SQL SERVER PIVOT 行转列、列传行

    在数据库操作中,有些时候我们遇到需要实现"行转列"的需求,例如一下的表为某店铺的一周收入情况表: WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIM ...

  8. DLA SQL技巧:行、列转换和JSON数据列展开

    1. 简介 在数据库SQL处理中,常常有行转列(Pivot)和列转行(Unpivot)的数据处理需求.本文以示例说明在Data Lake Analytics中,如何使用SQL的一些技巧,达到行转列(P ...

  9. db2查询表结构语句_常用的sql语句集合(适合数据库初级人员)

    一.基础 1.创建数据库 CREATE DATABASE database-name 2.删除数据库 drop database dbname 3.备份sql server --- 创建备份数据的 d ...

最新文章

  1. Premiere制作VCD视频几个关键设置
  2. android listView的setOnScrollListener的使用
  3. oracle字段重复新增错误,Oracle 判断表或字段是否存在新增/修改表结构可重复执行sql...
  4. (转载)WebSphere MQ安装过程
  5. [机器学习-原理及实现篇]线性回归-最小二乘法
  6. Hudi自带工具DeltaStreamer的实时入湖最佳实践
  7. 在Ubuntu 16.04 使用命令行安装Nvidia CUDA-9.0以及cudnn7
  8. ufvm可以读哪些网格_高三美术生可以读的985、211大学有哪些?
  9. vue.js把mounted里面的变量传到data里面
  10. 方维出现 Fatal error: Class 'Session' not found
  11. Android将库导入到build.gradle
  12. 去除 火狐浏览器自动给域名前加 www.
  13. Unity属性(Attributes)
  14. 纵横捭阖 《鬼谷子》
  15. 苹果手机如何深度清理_苹果手机还可以这样清理垃圾,怪不得用这么久还流畅如丝...
  16. xcode Unable to install xxx
  17. linux提取fasta文件的id,从大的fasta文件中提取特定的fasta序列
  18. jsp使用session出现The server encountered an unexpected condition that prevented it from fulfilling the r
  19. 有一堆棋子,两枚两枚的数,最后余1枚,3枚3枚的数,最后余2枚,5枚5枚的数,最后余4枚,6枚6枚的数,最后余5枚,只有7枚7枚的数,正好可以数完。编程求出这堆棋子最少有多少枚棋子?
  20. 零售行业交易数据分析(2)——RFM模型分类及可视化(Python实现)

热门文章

  1. A2F-轻量级SISR网络 | Lightweight Single-Image Super-Resolution Network with Attentive Auxiliary Feature
  2. 0522模拟赛 A. 求和 B.农民(farmer) C.仙人掌
  3. GTX 295 VS C1060 矩阵乘法测试(cublas)
  4. android编程绘制扇形,分析实现Android自定义View之扇形图
  5. [转]详细解释数据挖掘中的 10 大算法
  6. Python猴子摘香蕉问题
  7. C语言用递归调用实现阶乘
  8. 微信商城小程序WeiMall
  9. 1983—2001世嘉主机发展历程
  10. 武林外传手游怎么在电脑上玩,武林外传安卓模拟器电脑版教程