1、行、列转换

--行转列
create table 成绩(姓名 varchar(10),科目 varchar(10),分数 int)
insert into 成绩 values('张三','语文',74)
insert into 成绩 values('张三','数学',83)
insert into 成绩 values('张三','物理',93)
insert into 成绩 values('李四','语文',77)
insert into 成绩 values('李四','数学',84)
insert into 成绩 values('李四','物理',94)
insert into 成绩 values('王五','语文',81)
insert into 成绩 values('王五','数学',86)
insert into 成绩 values('王五','物理',91)
--方法1
select
姓名,
max(case 科目 when '语文' then 分数 else 0 end) as 语文,
max(case 科目 when '数学' then 分数 else 0 end) as 数学,
max(case 科目 when '物理' then 分数 else 0 end) as 物理
from 成绩 group by 姓名
--方法2(sql20005)
select*from 成绩 pivot(max(分数) for 科目 in (语文,数学,物理)) a --列转行
create table 成绩(姓名 varchar(10),语文 int,数学 int,物理 int)
insert into 成绩 values('张三',74,83,93)
insert into 成绩 values('李四',77,84,94)
insert into 成绩 values('王五',81,86,91)
--方法1
select 姓名,'语文' as 科目,语文 as 分数 from 成绩
union
select 姓名,'数学' as 科目,数学 as 分数 from 成绩
union
select 姓名,'物理' as 科目,物理 as 分数 from 成绩
--方法2
select 姓名,科目,分数 from 成绩 unpivot(分数 for 科目 in(语文,数学,物理)) t

2、分组排序

--(用上行转列的表,各科按成绩排名,sql2005)
select row_number() over(partition by 科目 order by 分数 desc) as 排名,姓名,科目,分数 from 成绩

3、递归查询
树形结构查找某个节点的上下级(sql2005)

create table 部门(id int,名称 varchar(30),上级id int)
go
insert into 部门 values(1,'总部',0)
insert into 部门 values(2,'研发部',1)
insert into 部门 values(3,'软件部',2)
insert into 部门 values(4,'企业软件部',3)
insert into 部门 values(5,'CRM开发部',4) go
with 下级部门 as
(
select*from 部门 where id=2
union all
select t1.* from 部门 t1 inner join 下级部门 t2 on t1.上级id=t2.id
)
select*from 下级部门
go
with 上级部门 as
(
select*from 部门 where id=4
union all
select t1.* from 部门 t1 inner join 上级部门 t2 on t1.id=t2.上级id
)
select*from 上级部门

4、多行拼接到一列
(在用户以及用户所属角色的列表)

create table 用户 (id int,名称 varchar(30))
go
create table 角色(id int,名称 varchar(30))
go
create table 用户_角色(用户id int,角色id int)
go
insert into 用户 values(1,'A')
insert into 用户 values(2,'B')
insert into 角色 values(1,'管理员')
insert into 角色 values(2,'主管')
insert into 用户_角色 values(1,1)
insert into 用户_角色 values(1,2)
insert into 用户_角色 values(2,2)
go select *,
stuff((select ','+名称 from 角色 a left join 用户_角色 b on a.id=b.角色id where b.用户id=u.id for xml path('')),1,1,'') as 角色
from 用户 u

几条sql语句的更多相关文章

  1. 一条Sql语句分组排序并且限制显示的数据条数

    如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...

  2. JavaWeb 学习009-4个页面,5条sql语句(添加、查看、修改、删除)

    ===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++ 2016-12-3------ ...

  3. JavaWeb 学习007-4个页面,5条sql语句(添加、查看、修改、删除)2016-12-2

    需要复习的知识: 关联查询 =================================================================================班级模块学 ...

  4. C#实现执行多条SQl语句,实现数据库事务

    C#实现执行多条SQl语句,实现数据库事务 在数据库中使用事务的好处,相信大家都有听过银行存款的交易作为事务的一个例子.事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的 ...

  5. 如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号(;)。

    1.如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号(;). 2.select查询的多个字段之间要用逗号“,”分割,如果查询涉及多个表,那多个表之 ...

  6. c#中执行多条sql语句【ORA-00911: 无效字符】

    问题描述: 在plsql里执行多条sql语句的时候,使用“,”(逗号)分隔,测试可以执行多条,而在C#执行多条sql语句的时候[ORA-00911: 无效字符]. 有时我们需要一次性执行多条sql语句 ...

  7. Spring 中jdbcTemplate 实现执行多条sql语句

    说一下Spring框架中使用jdbcTemplate实现多条sql语句的执行: 很多情况下我们需要处理一件事情的时候需要对多个表执行多个sql语句,比如淘宝下单时,我们确认付款时要对自己银行账户的表里 ...

  8. MyBatis一次执行多条SQL语句

    MyBatis一次执行多条SQL语句 有个常见的场景:删除用户的时候需要先删除用户的外键关联数据,否则会触发规则报错. 解决办法不外乎有三个:1.多条sql分批执行:2.存储过程或函数调用:3.sql ...

  9. 用一条SQL语句取出第 m 条到第 n 条记录的方法

    原文:用一条SQL语句取出第 m 条到第 n 条记录的方法   --从Table 表中取出第 m 条到第 n 条的记录:(Not In 版本)       *    FROM Table     id ...

  10. 使用传入的总记录数实现一条sql语句完成分页查询

    使用传入的总记录数实现一条sql语句完成分页查询     问题:在传统的分页查询的实现中不可避免的需要两条sql语句,一条用于查询数据一条用于查询总记录数.如下面的实际代码所示: Img1 当然如果使 ...

随机推荐

  1. onenote网页版如何打开链接弄到客户端

    1.网页登录https://onedrive.live.com 2.登录MS帐号 3.输入复制的分享链接,回车 4.点击编辑,在客户端编辑,弹出是否启动应用,点启动,等一段时间完成.

  2. http协议状态码对照表

    1**:请求收到,继续处理 2**:操作成功收到,分析.接受 3**:完成此请求必须进一步处理 4**:请求包含一个错误语法或不能完成 5**:服务器执行一个完全有效请求失败 100——客户必须继续发 ...

  3. iosiOS 地图 自定义以及添加锚点

    - (void)clickLongPress:(UILongPressGestureRecognizer *)longPress { CGPoint point = [longPress locati ...

  4. 使用codeblock实现JNI开发-2016.01.31

    使用交叉编译工具实现andorid平台下的jni开发,记录codeblock配置过程,方便后续参考. 1 工具版本信息 NDK r8b Code::Blocks 10.05 2 配置过程 使用code ...

  5. 【MVC】ASP.NET MVC HtmlHelper用法大全

    1.ActionLink <%=Html.ActionLink("这是一个连接", "Index", "Home")%>   带 ...

  6. 10 Code Coverage Tools for C & C++

    Code coverage is a measure used in software testing that describes the degree to which the source co ...

  7. 如何根据IP查找计算机名

    示例:nbtstat -A  192.168.1.123 参考网址:http://jingyan.baidu.com/article/335530daa40d7f19cb41c312.html

  8. 魔兽塔防游戏android源码

    魔兽塔防是一款经典的游戏,当年在pc机器上玩过魔兽的人应该都玩过类似的游戏,他仿照魔兽,建塔拦截敌人入侵,发挥你的智慧让敌人走最远的路,将他们消灭在路上.... 源码下载:http://code.66 ...

  9. logcat保存当前应用程序的日志并上传服务器或指定邮箱

    给大家分享一个项目中用到的日志统计并提交服务器的日志工具类.通过过得当前app的PID,采用命令行的方式实用logcat工具过滤日志.代码区: package org.and.util; import ...

  10. tomcat目录简介

    http://www.cnblogs.com/kerrycode/p/3588816.html 主目录下面有bin.lib等目录 bin 存放Tomcat启动.停止服务程序以及一些其他脚本程序 lib ...