SQL 分组问题

问题描述

有数据 如下ID1 ID2 STS COUNT000101S4000101F8000000102S211000102F2000103S22000103F2000104S85000105F2000105S15我想根据 ID1 ID2 分组分别取STS 状态 为S F两种的 COUNT值,有的 同 ID1 ID2下,只有S,或只有F,那么缺失的count值为0同一个ID2字段下面,只有两种STS的可能 S 或者 F 或者 只有 一种,那么就说明 另一种为0比如 第七条,只有S的记录,没有F,那么就说明F为0我想得到结果ID1 ID2 S COUNTS F COUNTF0001 01 S 4 F 80000001 02 S 211 F 20001 03 S 22 F 20001 04 S 85 F 00001 05 S 15 F 2 求SQL....ORACLE

解决方案

select ID1, ID2, 'S' S,sum(case when id2='S' then count end) COUNTS,'F' F, sum(case when id2='F' then count end) COUNTF from tablegroup by ID1 ID2

时间: 2024-09-19 23:57:36

SQL 分组问题的相关文章

SQL分组排序去重复的小实例

这篇文章介绍了SQL分组排序去重复的实例代码,有需要的朋友可以参考一下   复制代码 代码如下: SELECT     * FROM     (         SELECT             userid,             classid,             remark,             ROW_NUMBER () OVER (                 PARTITION BY userid,                 classid        

java-一个纠结的sql分组查询语句

问题描述 一个纠结的sql分组查询语句 是这样的 数据库里有一张 宿舍用电表(宿舍号,时间,电表度数) dormitoryElectric(dormitory,time,electric) 里面存的是每个小时电表上的度数,那我想查询所有宿舍近7天的每天用电度数要怎么写. 效果大概是这样的: 宿舍1 第一天用电度数 第二天用电度数 第三天用电度数 ... 宿舍2 第一天用电度数 第二天用电度数 第三天用电度数 ... 第二天用电度数应该是第二天的最后一次电表度数减去第一天的最后一次电表度数 解决方

oracle sql 分组 排序 筛选

问题描述 oracle sql 分组 排序 筛选 一个班级的学生有语文.数学.音乐等课程成绩,现求每位学生成绩最高的前两门课程: 如: 学生甲,语文:100,数学:90,音乐:80,则筛选出语文.数学: 学生乙,语文:80,数学:90,音乐:100,则筛选出数学.音乐: 尽量能用一条sql求出! 表:学生表student(id, name); 课程表course(id, name); 成绩表std_cor(id_student, id_course, score); 解决方案 SELECT *

ms sql-MS SQL 分组查询的疑问。

问题描述 MS SQL 分组查询的疑问. 我突然间对数据库的分组查询好像忘得差不多了,也突然变得不太理解.(解决问题) 如,表结构: Table Name:TEST ID name sex(bit) area ----------------------------- 1 mr.a 1 CN 2 mr.b 1 USA 3 mr.c 1 CN 4 mr.d 0 USA 5 mr.e 0 JP 6 mr.f 1 USA ----------------------------- GROUP 如何查询

sql分组取最大记录方法

先看看group by 语句的用法 GROUP BY 语句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组. SQL GROUP BY 语法 点击可查看源文  代码如下 复制代码 SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name 在SQL的 语句一起使用同样数目的SQL聚合函数提

SQL分组取指定字段最大值的记录

---------------------------------------------- --有id,name,createDate的一张表testTable --根据name分组,获取每组中createDate最大的那条记录(整条)查询出来 ----------------------------------------------创建一张表,语句如下: CREATE TABLE [dbo].[testTable]  (  [id] [int] NOT NULL IDENTITY(1, 1

sql 分组后获取其中一个字段最大值的整条记录

mysql的语句:  代码如下 复制代码 SELECT  * FROM (SELECT * FROM testTable ORDER BY createDate desc) pcc GROUP BY name Mysql中在分组前先排好序就可以找到需要的记录了,返回的就是按照name分组后不重复的符合条件的第一条记录. 在sqlserver中有很好的解决办法,  代码如下 复制代码 select * from ( select id,name,counts,createDate,row_numb

mysql实战--MYSQL中的SQL分组方法

     在mysql中没有提供分组统计函数,但mysql中变量使用非常灵活,在sql中可以灵活使用变量,这给mysql实现分组的方式带来很大方便,因此在  mysql实现一个分组统计的功能也并不难以实现,且理解起来还比较容易,比如我们提供一下的数据,用来描述,查询出的关键词的词频数,然后根据关键词的  类型,分组统计组内词频出现次数最后的前三挑数据  CREATE TABLE `policy_keywords_rel` (    `id` int(11) NOT NULL AUTO_INCRE

sql 分组查询问题_MsSql

情景一: 表中数据 name score aaa 11 aaa 19 bbb 12 bbb 18 ccc 19 ddd 21 期望查询结果如下 name score aaa 30 bbb 30 ccc 19 ddd 21 复制代码 代码如下: ---检查表是否存在 if exists(select * from sysobjects where name='testSum') drop table testSum go ---创建表 create table testSum ( tid int