求解oracle数据库一条sql查询出来 10C

Oracle数据库表a有area,value,date三个字段,存放着两个地区每日的统计数据:
Area Value date
海淀 12 2012-01-01
朝阳 19 2012-01-01
海淀 14 2012-01-02

请写出一条SQL语句得到如下格式结果:
“日期、海淀统计数、朝阳统计数、总数”
如:2012-01-01、12、19、31

4

10个回答

select
date,
nvl(sum(case when area='海淀' then value end),0) as 海淀统计数,
nvl(sum(case when area='朝阳' then value end),0) as 朝阳统计数,
nvl(sum(value)) as 总数
from table
group by date;

3
r471508128
r471508128 回复weixin_37306052: 你的表名是table吗?
一年多之前 回复
weixin_37306052
weixin_37306052 为什么我执行是报缺少左括号? 截图在底下
一年多之前 回复
z13571836771
就是不会 总数少个0;nvl(sum(value),0) as 总数
一年多之前 回复
r471508128
r471508128 写的不错,很完整
一年多之前 回复

select date,(select sum(Value) from table where area="海淀") as 海淀统计数,(select sum(Value) from table where area="朝阳") as 朝阳统计数

,sum(Value) as '总数' from table

1
 select a.date,(select sum(b.Value) from table b where b.area="海淀" and b.date=a.date ) as 海淀统计数,(select sum(c.Value) from table c where c.area="朝阳" and c.date=a.date) as 朝阳统计数

,(select sum(d.Value) from table d where d.date=a.date ) as '总数' from table a group by a.date
0
 select a.date as '日期',(select sum(b.Value) from table b where b.area="海淀" and b.date=a.date ) as '海淀统计数',(select sum(c.Value) from table c where c.area="朝阳" and c.date=a.date) as '朝阳统计数'

,(select sum(d.Value) from table d where d.date=a.date ) as '总数' from table a group by a.date

0

select date, sum(海淀统计数) as 海淀统计数, sum(朝阳统计数) as 朝阳统计数, sum(总数) as 总数 from
(
select date,sum(Value) as 海淀统计数,0 as 朝阳统计数, sum(Value) as '总数' from table where area="海淀"
union all
select date,0 as 海淀统计数,sum(Value) as 朝阳统计数, sum(Value) as '总数' from table where area="朝阳"
) a
group by date

0

nvl(sum(case when area='海淀' then value end),0) as 海淀统计数,
nvl(sum(case when area='朝阳' then value end),0) as 朝阳统计数,

0

select date as"日期",c.value as "海定统计数”,b.value as "朝阳统计数,count(*) as "总数”
from a as "c",a as "b"
group by area

0

图片说明为什么缺少做括号

0

create table test03 (vdate date,area varchar2(30),vvalue int)
insert into test03 values (trunc(sysdate,'d'),'haidian',10);
insert into test03 values (trunc(sysdate,'d'),'haidian',10);
insert into test03 values (trunc(sysdate,'d'),'chaoyang',10);
insert into test03 values (trunc(sysdate,'d')-1,'chaoyang',10);
insert into test03 values (trunc(sysdate,'d')-1,'haidian',10);
insert into test03 values (trunc(sysdate,'d')-1,'chaoyang',10);
insert into test03 values (trunc(sysdate,'d')-1,'chaoyang',10);

select d.*, d.haidian + d.chaoyang sums
from (select *
from test03
pivot(sum(vvalue)
for area in('haidian' haidian, 'chaoyang' chaoyang))) d

0

oracle里行转列,列转行一般都有pivot或者unpivot,旋转函数很好用,性能也不错,如果你使用的数据库不支持这些函数再考虑使用前面的那些方案~

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
数据库空表也能查询到一条数据
select sum(inout) as sum from UserTable; 查询空表会有一条数据,只是值为空(不是null)而已
Oracle 查询出来的数据取第一条
select * from (select * from <table> order by <key> desc) where rownum=1; select * from (select * from <table> order by <key>) where rownum=1; 转载于:https://www.cnblogs...
oracle 查询重复数据并且删除, 只保留一条数据的SQL语句
delete from t_account where feedate in (   select feedate           from t_account   group by feedate   having count(1)>1 ) and id not in (   select min(id)           from t_account   group by
Oracle数据库的SQL查询语句查询每个用户最近一次的登录记录并且只显示一条
有如下数据库及数据:create table oness( oids number(4) primary key, Names varchar2(10) not null, Email varchar2(20), LastLogin date );添加的数据如下: 查询出test4、test1、test2用户最近的登录记录有两种方式:
ORACLE和MYSQL语句查询时限制条数的区别
ORACLE语句 使用rownum,具体用法可以看这篇博文oracle 的ROWNUM用法 例: select * from tb_name where rownum <= n MYSQL语句 使用limit, “limit n”,n是条数 例: select * from tb_name where limit 2; ...
SQL将查出来的某一条数据置顶
 第一种方法 CASE WHEN beginTime IS NULL       THEN 0 ELSE 1 END SELECT    LEFT(endTime, 10) AS validDate,   beginTime,   endTime,   COUNT(0) AS ticketNum,   ticketType,   ticketState  FROM   t_ticket  WH...
sql 语句查询当前数据的上一条数据和下一条数据
mc_otp_review_example为表名,id为表的主键(int类型) 查询上一条数据: select * from mc_otp_review_example where id=(select max(id) from mc_otp_review_example where id< 10) 查询下一条数据: select * from mc_otp_review_e...
oracle 将sql查询的多条结果拼接的方法
用聚合函数,然后使用 wmsys.wm_concat(拼接字段) 方法   示例: select classcode,wmsys.wm_concat(xsqd) as xsqd from zylife.xzsale E   where E.classcode IN(  'AA7101',   'EL9912') group by classcode     结果:   可以通...
oracle的查询出多条重复数据,实际上数据库并没有重复的数据
原因: 毫无疑问,查询语句的where条件写错了(是的,我本人,没错了),检查关联两个表的字段是否是外键(有关外键),这里我就是犯傻了,用了非外键进行关联,导致无法正确关联两个表进行操作 tb_source表: tb_collect 表: 原sql语句: select t1.* from tb_source t1, tb_collect t2 where t1.source_name = '...
shell脚本连接oracle数据库并将查询出的数据写入文件
有时候需要从oracle数据库将数据查询出来并导出到文件,这时就可以通过shell脚本实现,脚本代码如下 get_test_id() { sqlplus user/passwd@database set linesize 5000 num 14; set numw 20; select 'xxx',test_id from test; exit; ! } get_test_i
不清楚为什么这两个查询结果为什么不同?oracle sql
  语句一: select a.ich_dadate,        b.ws_ssname,        c.pl_ssname,        d.ve_ssname,        e.icl_nqsum,        e.icl_ssunit3,        f.sk_ssname,        g.emp_ssname   from ic_trnh      ...
oracle 编写sql语句获取表中的最后一条数据
select p.* from (select * from t_cfg_menu t order by t.menu_id desc) p where rownum = 1首先查询表中数据按降序排列,然后通过“rownum = 1”获取第一条数据,即是原表中的最后一条数据!
Oracle查询重复数据并删除,只保留一条记录
Oracle查询重复数据并删除,只保留一条记录     前言   项目中,在“资源目录-在线编目”中,资源项子表存在多条重发数据,需要进行数据清理,删除重发的数据,最终只保留一条相同的数据。   操作的表名:R_RESOURCE_DETAILS   操作步骤   重发记录根据单个字段来判断   1、首先,查找表中多余的重复记录,重复记录是根据单个字段(FIELD_COD
oracle:数据库查询返回结果集的默认值
Oracle数据库中结果集的默认值: 1.列名全部转换成了大写的形式。 2.字符和日期列是左对齐的。 3.数字列是右对齐的。 4.oracle数据库会以DD-MON-YY的形式显示日期。
用Mybatis查询数据库oracle一直找不到数据,但数据库存在数据
查oracle中有数据,但是Mybatis或hibernate查询却总是得不到,试着在数据库打一下commit。说不定能解决问题
oracle数据库将多条记录合并到一条中显示
#### 场景将账户表中同一个用户的账户号合并显示在一条记录中#### 效果图#### 建表语句```create table user_account(    id number(12,0) primary key,    name varchar(50),    account_name varchar(50),    balance number(10,2));insert into use...
查询 + 添加 + 修改 一条sql 搞定~
1 .  不存在,则添加~不会自动修改 INSERT INTO king_wz (yname,title) SELECT '42','北京' FROM dual WHERE not exists(SELECT id FROM `king_wz` where yname='42'); 语句解析: select not  exists(SELECT id FROM `king
ORACLE 数据库中使用sql拼接到查询的一行数据
  今天遇到这样一个问题  :查到省市区县和地址把这几个字段拼接起来返回,如下     要的效果是     采用 || 符号,用'||'来一次串连多个字串。 查询语句如下 select PROVINCE || CITY || DISTRICT ||ADDRESS from V_CCM_PICKUP_ADDRESS where customer_profile_id = ...
oracle数据库sql developer 用SQL可以查到数据,但是程序却查不出来
使用 oracle sql developer 刚刚插入了一批数据,自己用sql查的到,但是JDBC程序查不到,原因很简单,oracle sql developer默认是不提交事务的,所以这条记录并没有真正写到数据库里面,提交一下,问题解决!   ...
hibernate查询oracle数据库记录,一个字段为NULL整条记录就NULL的解决办法
1 问题描述 数据库表如下,选出来的这行有几个属性值为NULL,其中第4列 的QI oracle类型为number 实体类部分如下,其中 qi对应数据库表中的QI列,类型为double 使用sql语句在navicat中能正确查出数据,可是在hibernate中,查出的是空 2 解决办法 将实体类中的 类型为double 都改为 它的包装类Double就可以了。 3 问题原因 这个我目前也不清...
MyBaties查询出来的数据比数据库的少
原因:mybaties映射时使用主键判断唯一性,如果查询出来的数据集在映射文件配置中没有设置主键或者主键存在相同的情况下,MyBaties之映射其中一条解决方法:给查询出来的结果加上主键字段,在MyBaties的映射文件中也进行配置...
记一次‘mybatis关联查询mysql数据库结果比用sql语句直接查询数据库结果记录条数少的’ 原因排查
技术背景: 项目做读写分离开发,在公司原有的技术架构基础上,数据库实现主从复制,用mybatis来完成只读操作,从而实现读写分离的目的。 遇到问题: mybatis关联查询mysql数据库结果比用sql语句直接查询数据库结果记录条数少 原因排查: 1.首先,用 * 替换了数据库字段名; 2.其次,查询的结果集resultType 替换为 resultMap 结果映射; 处理结果: 还是没有解...
SQL语句中查询并在结果中添加一条虚拟数据
在sql语句后用 union select  ‘date' as Field
SQL查询出一个表数据插入到另一个表里
下面两中方式都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的: 方式一 (select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建。 select * into destTblfrom srcTbl 方式二 (insert into select from)要求目标表(destTbl)存在,由于目标表已经存在,所以我们除了插入源...
各数据库SELECT结果只显示前几条记录方法整理
为了查看数据表中的数据情况。经常会遇到想让查询结果只显示N行,比如只显示10行的情况。不同的数据库有不同的关键字和SELECT实现语法。整理如下,本人亲测。 1、SQL Server数据库 select top 10 * from table_name; 2、DB2数据库 select * from table_name fetch first 10 rows only; 3、Or...
Oracle查询出来的数据只取第一条和最后一条
结合oracer by和rownum来做: --第一条 select * from bdatag_tag order by tag_id where rownum = 1; --最后一条 select * from bdatag_tag order by tag_id desc where rownum = 1;  
初步了解mybatis
初步了解MyBatis 需要导入 mybatis-x.x.x.jar; 连接数据库为mysql 导入对应数据库的 mysql-connector-java-5.1.18-bin.jar 数据库表 t_user 里面字段:id(主键、自增) name passwod age qq Model层里面对应的类:User package ...
写SQL:找出每个城市的最新一条记录
写SQL:找出每个城市的最新一条记录(没写出来)id 城市 人口 信息 创建时间1 北京 100 info1 时间戳2 北京 100 info2 时间戳3 上海 100 info3 时间戳4 上海 100 info4 时间戳info表SQL语句:select * from info as info1 join (select city ,max(createtime) as createtime ...
oracle查询数据库表的最后一条数据
试过很多方式,就是这种效率高
一条sql查询出多个统计结果
今天又踩了一个坑:我在做查询的时候,条件是中文,结果导致查询不出来结果,换成英文就可以了,猜想是编码导致。想起来在数据库url配置哪里忘了加编码。加上之后就没问题了。强制规定:url后面加 ?useUnicode=true&characterEncoding=UTF-8最近公司有一个业务需求,统计一张表在每个条件下的数量。以user为例,首先创建表并添加数据接下来创建一个model用来接收...
使用cx_Oracle将数据写入Oracle数据库
# coding=utf-8 import cx_Oracle import os import json os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' """python version 3.7""" class TestOracle(object): def __init__(self,user,pwd,ip,p...
sql去重;同一条数据出现多条取一条的sql语句
理论上相同数据个别字段值不同重复问题: 1.某字段重复,其他字段值不同时,按重复字段分组只取一条的sql语句 (eg:相同的数据某个字段值有差别导致存储两条或多条无意义重复数据的情况)select s.* from (    select a.*, row_number() over (partition by [重复字段] order   by [不同字段]) as group_idx f...
关于oracle取10条最新数据的sql
SELECT *   FROM (SELECT a.*   FROM table a   ORDER BY date DESC)   WHERE ROWNUM <= 10      先进行全表搜索排序,再取10条
两条记录合并一条的 sql
select          eu.ID, eu.UID, eu.ID_NO, eu.USER_NICK, eu.USER_NAME, eu.PWD_DIGEST, eu.PWD_SALT, eu.SEX,EMAIL, eu.PHONE, eu.STATUS, eu.USER_TYPE, eu.REG_SRC_ID, eu.USER_LOC, eu.GMT_BIRTH,
sql删除重复保留一条
1.查询重复:select * from wx_user_address  where USER_num in (select USER_num from wx_user_address group by USER_num having count(USER_num)>1) 2.删除重复保留一条:delete from wx_user_address where GMT_CREATE<...
SQL查询一对多返回一条数据
一。查询中product和product_img是一对多的关系(数据库是MySQL) select p.id, p.product_cost_price, p.product_trade_price, p.product_sale_price, p.collect_num, p2.collect_status, ...
SQL查询当前数据以及上一条和下一条三条记录
想查询某个表当前数据以及上一条和下一条的记录,网上找了一下解决办法都不如意,按网上的方法可以查询出三条数据,但是当查询的这条数据没有上一条或下一条记录时就不行了。现在我把解决问题的sql语句放上 : 理一下思路,明确的查询三条语句:SELECT * FROM 表名 WHERE id IN(当前id的前一个id值,id值,当前id的后一个id值) 在这里说一下为什么是“当前id的前一个id值”而
关于ORACLE数据库UNION的用法实例
SELECT MIN(A1.PAYDATE) PAYDATE FROM ( SELECT C.PAY_PRINCIPAL_DATE AS PAYDATE FROM ABS_PROJ_PRPS_INFO A, ABS_PROJ_SECS_INFO B, ABS_PROJ_PRIN_PLAN C WHERE A.PROPOSAL_ID = B.PR...
关于SQL查询一对多返回一条数据的方式
这个时候使用  GROUP_CONCAT 函数 ,将项目对应人信息合并成一个字段                    select GROUP_CONCAT(xxx SEPARATOR ',') from table_name group by xxx
关于Oracle中查询出的数据显示为乱码的解决办法
当数据库中某个字段为CLOB,查询出来的时候,对应的字符串得不到正确的显示,可以通过TO_CHAR(字段)转换一下即可,也可以使用oracle自带的dbms_lob.substr(字段)进行处理,但是有长度限制,超过一定的长度会报错 ...