`
woshixushigang
  • 浏览: 578585 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

统计oracle 数据库 lawpeople表lawtype字段多个值只统计一次问题,按照地区分类

阅读更多
select  temparea.name,(case when lawtype like '%501%' then 501 when  lawtype like '%502%' then 502 
when lawtype like '%503%' then 503 when lawtype like '%504%' then 504 when lawtype like '%505%'
 then 505 when lawtype like '%506%' then 506 when lawtype like '%507%' then 507 when 
lawtype like '%508%' then 508 when  lawtype like '%509%' then 509 when lawtype like '%510%'
 then 510 else null end)lawtype,  temparea.supid,temparea.id  from lawpeople law   inner join area 
temparea on law.areaid= temparea.id  where   (ADDNEW is null or ADDNEW=4 or ADDNEW=6 ) and 
( RETIREMENT is null or RETIREMENT=0 or RETIREMENT=1 or RETIREMENT=2 or  RETIREMENT=3 or
 RETIREMENT=5 ) and (TRANSFERRED is null or TRANSFERRED=0 or TRANSFERRED=1 or TRANSFERRED
=2 or TRANSFERRED=3 or TRANSFERRED=5 ) and (OTHERREASONS is null or OTHERREASONS=0 or 
OTHERREASONS=1 or OTHERREASONS=2 or OTHERREASONS=3 or OTHERREASONS=5 ) and  
(BATCHLAWCODE is null or BATCHLAWCODE= 4 or BATCHLAWCODE= 6 );

 

上面的是视图。

这是统计的sql:

select rownum n,temp.* from (  select name,sum(case when lawtype like '%501%' THEN 1 else 0 end)
 zongHeZhiFa, sum(case when lawtype like '%502%' THEN 1 else 0 end) binWeiWuZhong, 
sum(case when lawtype like '%503%' THEN 1 else 0 end) shuMuZhongMiao,
 sum(case when lawtype like '%504%' THEN 1 else 0 end) linZhengGuanLi, 
sum(case when lawtype like '%505%' THEN 1 else 0 end) senLinGongAn, 
sum(case when lawtype like '%506%' THEN 1 else 0 end) shengTaiGongCheng, 
sum(case when lawtype like '%507%' THEN 1 else 0 end) yeShengDongWuBaoHu, 
sum(case when lawtype like '%508%' THEN 1 else 0 end) zhiWuJianYi, 
sum(case when lawtype like '%509%' THEN 1 else 0 end) zhiWuXinPinZhong, 
sum(case when lawtype like '%510%' THEN 1 else 0 end) other, supid,id 
 from arealawtype law    group by name,id ,supid HAVING id=728 or supid= 728 order by id asc   ) temp 
 

以下是测试数据:

 

 

数据库中 lawtype存的是

序号 姓名   类别

1    姓名   501,502,503

 

如果按照

 sum(case when lawtype like '%504%' THEN 1 else 0 end) linZhengGuanLi, 

这钟方式直接统计,那么统计出来的数据比原有数据要多,因为501的统计了一次,502的又把这条数据统计了一次,所以统计出来的数据要多。

 

怎样才能不多呢?

 

我建了个视图,把需要的类别用case when  then  when then .....方式过滤一遍,这样数据就不会多于了,在代码中直接查询这个视图就可以了。

 

 

 

分享到:
评论

相关推荐

    Oracle数据库表建立字段唯一性的方法

    在Oracle数据库中,确保表中特定字段具有唯一性是数据完整性的重要方面。这可以通过创建唯一约束或唯一索引来实现。以下是对"Oracle数据库表建立字段唯一性方法"的详细解释: 1. **唯一约束(Unique Constraint)**...

    oracle数据库字段值自动加1

    Oracle 数据库字段值自动加 1 Oracle 数据库中,字段值自动加 1 是一个...Oracle 数据库字段值自动加 1 是一个常见的需求,可以通过创建表、序列和触发器来实现。通过合理的设计和实现,可以满足实际应用中的需求。

    oracle数据库表,字段信息导出为excel

    每个表的信息会被写入一个新的行,字段信息作为单元格内容。此外,你还可以利用POI的超链接功能,创建工作表间的跳转,使得用户可以在Excel的不同工作表之间快速切换。 总的来说,通过结合JDBC和Apache POI,我们...

    oracle数据库表中修改字段的顺序

    ### Oracle数据库表中修改字段顺序的方法 在Oracle数据库中,我们常常会遇到需要调整表中字段顺序的情况。例如,为了优化查询效率或是更好地符合业务逻辑,我们可能希望更改某些字段的位置。在过去,如果想要改变一...

    oracle数据库中的对表中字段的增删改查

    在Oracle数据库中,对表中字段的增删改查是数据库管理的基础操作,涉及到数据库设计、数据完整性以及日常的数据维护工作。以下将详细介绍这四个基本操作,并结合标签“源码”和“工具”来探讨如何在实践中高效地完成...

    读取oracle数据库中clob字段的值

    ### 读取Oracle数据库中CLOB字段的值 在处理Oracle数据库时,经常会遇到需要读取CLOB(Character Large Object)类型字段的情况。CLOB主要用于存储大量的文本数据,如文章、文档等内容。由于CLOB类型的数据量可能...

    Oracle数据库表中字段顺序的修改方法

    例如,创建一个名为`test1`的表,并添加一个`id`字段: ```sql create table test1(id varchar2(20) not null); ``` 若要在`test1`表中增加一个名为`name`的新字段,可以使用如下语句: ```sql alter table test1 ...

    解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    "解决mybatis使用char类型字段查询oracle数据库时结果返回null问题" 在使用mybatis框架对Oracle数据库进行查询操作时,如果使用char类型字段作为查询条件,可能会出现结果返回null的问题。这种情况下,需要对char...

    Oracle数据库表结构导出工具

    DBExport是一个这样的工具,正如其名称"DBExport2.51 For ORACLE"所示,它专门针对Oracle数据库,支持将数据库的表结构导出到Excel文件中。这个工具的主要功能包括: 1. **表结构提取**:DBExport能够连接到Oracle...

    批量导出ORACLE数据库BLOB字段生成文件

    本教程将详细讲解如何批量导出Oracle数据库中的BLOB字段并生成文件,适用于需要定期或一次性处理大量图片或其他BLOB数据的场景。 首先,确保你已经在本地安装了Oracle客户端。Oracle客户端提供了SQL*Plus和其他工具...

    批量导出ORACLE数据库BLOB字段生成图片

    Oracle数据库在存储大对象...总之,批量导出Oracle数据库中的BLOB字段生成图片涉及到了数据库连接、SQL查询、BLOB数据处理和文件I/O等多个技术环节。掌握这些知识点对于管理和维护包含二进制数据的数据库系统至关重要。

    Oracle数据库中添加单个字段操作脚本。

    Oracle数据库中,对已存在数据的表中插入单个字段信息。

    oracle实现多字段匹配一个关键字查询(本人亲测,没毛病)

    ### Oracle实现多字段匹配一个关键字查询 在Oracle数据库中,有时我们需要从多个字段中搜索包含特定关键字的数据。这种需求在很多场景下都非常常见,比如在CRM系统中搜索客户信息、在文档管理系统中查找文档等。...

    java对oracle数据库中blob字段的处理

    为了解决这个问题,可以采用一种间接的方法:首先在本地数据库创建一个临时表,并将BLOB数据插入到该临时表中;然后,通过DBLink从远程数据库选择并操作这些数据。这种方法避免了直接通过DBLink处理大对象数据的问题...

    Oracle数据库表生成C#实体类

    "Oracle数据库表生成C#实体类"是一个实用的小工具,它的主要目的是自动化这个过程,避免开发者手动编写繁琐的实体类代码。虽然这个工具可能存在一些小问题,但它可以大大提高开发效率,尤其是在处理大量表结构时。 ...

    Oracle数据库表结构导出工具Excel

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,用于存储、管理和检索复杂的数据。在日常的数据库管理工作中,有时我们需要将数据库的表结构导出到其他格式,如Excel,以便进行数据分析、报表制作或共享给...

    Oracle数据库大作业

    【Oracle数据库大作业】是一个关于Oracle数据库在教务管理系统中的应用项目,可能涵盖了数据库设计、实施、优化等多个方面的内容。这个大作业包含了PPT演示文稿、Word文档以及可能的源代码,为学习者提供了全面了解...

    C#访问oracle数据库类,带blob字段读写

    Oracle数据库提供了一个名为ODP.NET(Oracle Data Provider for .NET)的数据访问组件,它允许C#应用程序直接与Oracle服务器进行交互。通过ODP.NET,我们可以创建连接、执行SQL命令以及处理数据。 1. **执行非查询...

Global site tag (gtag.js) - Google Analytics