sql 语句系列(行与列处理)[八百章之第一章]

排序时对null进行处理

比如说:
select * from EMP order by COMM

我需要对红框部分进行desc处理,也就是从大到小排列。

解析:

重点是如何让null独立出去。

select * from 

(select *,case when COMM is null then 0 else 1 end as COMMISNULL from EMP )
x
order by COMMISNULL,COMM desc

解法:单独列出一列把null独立出去。

注意null的判断是 is而不是等于号

依据条件逻辑动态调整排序项

比如说:

select * from EMP

我希望的是:如果job 是SALESMAN的话,那么按照COMM排序,否则SAL 排序

解法:

在上面一个例子中,我们排行是通过排除某些行,对另外一个行进行处理。
而我们这个例子是针对列的,如果是针对列的那么更为简单。

select *
from EMP
order by case when JOB=‘SALESMAN‘ then COMM else SAL end

原文地址:https://www.cnblogs.com/aoximin/p/12543642.html

时间: 2024-08-09 12:06:26

sql 语句系列(行与列处理)[八百章之第一章]的相关文章

sql 语句系列(众数中位数与百分比)[八百章之第十五章]

众数 众数就是出现最多的那个数. select sal,count(*) as cnt from emp where DEPTNO=20 group by sal 通过分组把他们的行数计算出来.那么最关键的部分在于,你如何知道最大值. 是的我们可以查出当前最大值,然后再取出最大值的sal.但是这肯定要用到两个临时视图. 注:我们不能通过排序cnt,然后取值第一个,因为可能存在相同的行数. 解决方案:通过dense_rank 进行排序. 科普一下概念: row_number的用途非常广泛,排序最好

sql 语句系列(用魔法打败魔法)[八百章之第十章]

前言 下面是一些常规的运维手段. 查询每个表的行数 SELECT a.name, a.object_id, b.rows, b.index_id FROM sys.tables AS a INNER JOIN sys.partitions AS b ON a.object_id = b.object_id WHERE b.index_id IN ( 0, 1 ); 哦,对了,对有些大神说,去新公司的时候执行一下这个代码,如果行数不够直接跑路. 后续列举的所有的更新都放在这里,运维相关的.持续更新

Sql 语句收集——行转列

SQL行转列汇总 PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) ) UNPIVOT用于将列明转为列值(即列转行),在SQL Server 2000可以用UNION来实现 完整语法:

sql学习系列-行转列问题 动态列展示

最近在做项目的过程需要做一个比较复杂的统计报表,涉及行转列问题. 首先看看报表的格式要求: 格式中要求按照日期的查询进行动态查询列标题,以及将数据进行按照日期进行列展示. 针对此要求,可以做一个简单的例子进行说明,可以进行两个步骤的操作: (1)先构造基本的数据: (2)对构造的数据进行行转列操作. create table test1(int test1,kqrq datetime,kqsj nvarchar(30));insert into test1(zh,kqrq,kqsj) value

经典SQL问题: 行转列&lt;转&gt;

转 经典SQL问题: 行转列 发表于5个月前(2015-09-19 17:49)   阅读(2905) | 评论(0) 20人收藏此文章, 我要收藏 赞0 学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当作列.数据库grade里面数据如下图,假定每个人姓名都不一样,作为主键.本文以MySQL为基础,其他数据库会有些许语法不同. 数据库数据: 处理后效果: 下面介绍三种方法: 方法一: ? 1 2 3 4 5 SELECTDISTINCT a.name, (SELE

SQL SERVER特殊行转列案列一则

原文:SQL SERVER特殊行转列案列一则 今天有个同事找我,他说他有个需求,需要进行行转列,但是又跟一般的行转列有些区别,具体需求如下所说,需要将表1的数据转换为表2的显示格式. 我想了一下,给出了一个解决方法,具体如下所示(先给出测试数据) INSERT INTO TEST SELECT 1,    1,    '定型名称',    '预定型'           UNION ALL SELECT 1,    2,    '进布方式',    '调平'             UNION 

SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段

一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL,动态列字段: 方法三:使用PIVOT关系运算符,静态列字段: 方法四:使用PIVOT关系运算符,动态列字段: 扩展阅读一:参数化表名.分组列.行转列字段.字段值: 扩展阅读二:在前面的基础上加入条件过滤: 参考文献(References) 二.背景(Contexts) 其实行转列并不是一个什么新鲜的

sql语句查找某一列的值得最大值。

记录一下:sql语句查找某一列的值得最大值. 1.例如我要查找 表A中a列的最大值: 查找语句可以这么写: "select Max(a) a from A" 2.查找表A中a列中包含字符串string的最大值,其实就是模糊找查找并取其中的最大值 : 其中字符串是变量,可以这么写:" select MAX(a) a from A where  a like '%"+string+"%'"

sql中的行转列和列转行的问题

sql中的行转列和列转行的问题 这是一个常见的问题,也是一个考的问题 1.行转列的问题  简单实例 CREATE TABLE #T ( MON1 INT, MON2 INT, MON3 INT ) GO INSERT INTO #T VALUES(1,2,3) GO SELECT * FROM #T --行转列:(union all) SELECT MON1 FROM #T UNION ALL SELECT MON2 FROM #T UNION ALL SELECT MON3 FROM #T G