创建临时表 #Test

CREATE TABLE #Test( ID INT, Name VARCHAR(50) )
INSERT INTO #Test( ID, Name ) VALUES ( 1, 'A' )
INSERT INTO #Test( ID, Name ) VALUES ( 2, 'A' )
INSERT INTO #Test( ID, Name ) VALUES ( 4, 'A' )
INSERT INTO #Test( ID, Name ) VALUES ( 5, 'B' )
INSERT INTO #Test( ID, Name ) VALUES ( 8, 'B' )
INSERT INTO #Test( ID, Name ) VALUES ( 10, 'B' )
INSERT INTO #Test( ID, Name ) VALUES ( 3, 'C' )
INSERT INTO #Test( ID, Name ) VALUES ( 6, 'D' )
INSERT INTO #Test( ID, Name ) VALUES ( 7, 'D' )
GO

删除/过滤 重复记录

-- (推荐) 将 #Test 中 name 重复的记录删除,只保留 ID 最小的记录
DELETE t1 FROM #Test t1 WHERE t1.ID > (SELECT MIN(ID) FROM #Test t2 WHERE t1.Name = t2.Name)

也可以用 ROW_NUMBER(),但是这个效果不行,而且难以理解

-- 使用 ROW_NUMBER() 过滤重复记录
SELECT *
FROM (SELECT ID, Name, ROW_NUMBER() OVER(PARTITION BY Name ORDER BY ID) row_index FROM #Test ) t
WHERE t.row_index = 1

  

行转列

SELECT r.userid
,STUFF((SELECT ',' + CONVERT(VARCHAR(12),DepartmentID) FROM tMemberDepartment WHERE userid = r.userid AND ISNULL(deleteflag,0)=0 FOR XML PATH('')) ,1,1,'') department
FROM dbo.tMember r

  

PIVOT  和 UNPIVOT 关键字

reference:勤奋的耕牛 的 SQL Server中行列转换 Pivot UnPivot

PIVOT 行转列

CREATE table #tb(姓名 varchar(10),课程 varchar(10),分数 int)
INSERT INTO #tb values('张三','语文',74)
INSERT INTO #tb values('张三','数学',83)
INSERT INTO #tb values('张三','物理',93)
INSERT INTO #tb values('李四','语文',74)
INSERT INTO #tb values('李四','数学',84)
INSERT INTO #tb values('李四','物理',94)
GO
//行转列
SELECT * FROM #tb PIVOT (MAX(分数) FOR 课程 IN (语文,数学,物理)) a

  

UNPIVOT 列转行

CREATE TABLE #tb2(姓名 varchar(10),语文 int,数学 int,物理 int)
INSERT INTO #tb2 values('张三',74,83,93)
INSERT INTO #tb2 values('李四',74,84,94)
GO
//列转行
SELECT 姓名,课程, SUM(分数) 分数
FROM #tb2
UNPIVOT (分数 FOR 课程 IN ([语文],[数学],[物理])) t

  

SQL Server 实用语句的更多相关文章

  1. 如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?

    如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括:如何 ...

  2. SQL Server分页语句ROW_NUMBER,读取第4页数据,每页10条

    SQL Server分页语句ROW_NUMBER,读取第4页数据,每页10条 SELECT Id,[Title],[Content],[Image] FROM ( SELECT ROW_NUMBER( ...

  3. SQL Server UPDATE语句的用法详解

    SQL Server UPDATE语句用于更新数据,下面就为您详细介绍SQL Server UPDATE语句语法方面的知识,希望可以让您对SQL Server UPDATE语句有更多的了解. 现实应用 ...

  4. SQL Server中语句的自动参数化

    原文:SQL Server中语句的自动参数化 use master go if exists(select * from sys.databases where name = 'test') drop ...

  5. SQL server 常用语句

    SQL Server中常用的SQL语句   1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10. ...

  6. sql server 基础语句

    创建数据库 创建之前判断该数据库是否存在 if exists (select * from sysdatabases where name='databaseName') drop database ...

  7. SQL Server Merge语句的使用

    Merge关键字在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句.MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插 ...

  8. SQL Server 脚本语句

    一.语法结构 select select_list [ into new_table ] from table_source [ where search_condition ] [ group by ...

  9. SQL Server 分页语句

      表中主键必须为标识列,[ID] int IDENTITY (1,1) 1.分页方案一:(利用Not In和SELECT TOP分页) SELECT TOP 页大小 * FROM TestTable ...

随机推荐

  1. socket通信框架——boost asio

    boost asio是一个封装了基本socket的跨平台通信框架.它支持异步访问,并支持tcp的自动封闭控制等操作. 一个简单的通信协议可以为: header body body长 数据 通过boos ...

  2. Linux零拷贝技术

    本文转载自Linux零拷贝技术 导语 本文讲解 Linux 的零拷贝技术,云计算是一门很庞大的技术学科,融合了很多技术,Linux 算是比较基础的技术,所以,学好 Linux 对于云计算的学习会有比较 ...

  3. Android获取OneNET云平台数据

    尝试HttpURLConnection "get"方式获取了www.baidu.com的数据后,试着获取OneNET云平台的设备数据(设备数据已成功上传至云平台) .java文件 ...

  4. 使用PageHelper进行分页查询

    service层代码: public Result getDataSetList(String dataCode, String dataName, int pageIndex, int length ...

  5. Java8 关于stream.foreach()和stream.peek()的区别解析

    该思考来源于日常工作中,特记此心得. 思考:如何快速将list中的每个item内部属性值改变并进行其他流体操作呢? 下面做个测试:如何先在list中统一改变某属性的值,然后再根据某个属性取出该属性值最 ...

  6. Python3.x 基础练习题100例(01-10)

    练习01: 题目: 有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 分析: 可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. ...

  7. 【图像处理】使用OpenCV进行图像处理教程(一)

    OpenCV是进行图像处理的工具,也是计算机视觉领域近十几年不断发展和完善的产物.面对这个已基本成熟的开源库知识体系,我们新生代有必要不断地总结.回顾,以新的视角快速融入计算机视觉的奥秘世界. 从这篇 ...

  8. vue关于导航守卫的几种应用场景

    beforeEach 该钩子函数主要用来做权限的管理认证 router.beforeEach((to, from, next) => { if (to.matched.some(record = ...

  9. 权益满满 | PGConf.Asia2020大会诚邀赞助商!携手走向更大世界!

    转: 权益满满 | PGConf.Asia2020大会诚邀赞助商!携手走向更大世界! 关于PostgresConf.CN&PGConf.Asia2020大会作为全球最大.最知名的PG序列会议, ...

  10. 剑指 Offer 24. 反转链表

    剑指 Offer 24. 反转链表 Offer 24 题目描述: 常规解法 本题的解法很常规,没有其他特别的坑,只需要将链表反转即可. package com.walegarrett.offer; / ...