大家好,问一个sql 的select的问题,比如select 出来的项有
"区间通话费(电信)","区间通话费(联通)","区间通话费(移动)",
"国内长途费(移动)","国内长途费(联通)",11816888市话费........
怎么把区间通话费的相关数据合并为一项,区内通话费的相关数据合成一项,长途费合成一项呢?每条记录有两个字段,还有一个是话费,意思是要分类求出话费总数谢谢,在线等!
"区间通话费(电信)","区间通话费(联通)","区间通话费(移动)",
"国内长途费(移动)","国内长途费(联通)",11816888市话费........
怎么把区间通话费的相关数据合并为一项,区内通话费的相关数据合成一项,长途费合成一项呢?每条记录有两个字段,还有一个是话费,意思是要分类求出话费总数谢谢,在线等!
解决方案 »
- 求SQL语句
- 表被锁,不知道什么原因,该怎么解决。
- oracle spatial出现问题该如何解决
- 为什么oracle服务自动关闭?
- [ORACLE][ODBC]Restricted data type attribute violation 错误! 急~~~~~~~~~
- 这两句话是什么意思?大概是个什么结果
- Listener服务不能启动是怎么回事? 是不是因为主机名换了的原因?
- oracle表中含有blob字段导出导入问题?
- oracle9安装问题运行 runinstall 出现cannot execute binary file ?
- pro c 在vc下链接的问题(再现等待
- 物化视图怎么停掉?
- 导入数据库出现问题,提示最大值10,实际值12,可能是编码方式问题?
group by 的东西根据你的需求,在字段中提取吧.
第二种: jdsnhan(柳荫凉) 请具体给出group by 中的提取方法
"国内长途费(移动)","国内长途费(联通)",11816888市话费 如果能直接查出来
那就可以像 chd2001 所说直接相加, 如果需要分类 就再加上 group by .. ,现在不知道你原始数据就很难分析怎么分类.
from tablename
group by typelz是要这样的结果么
,区间通话费
,国内长途费
,国内IP长途费
from(
select type,sum(decode(substr(type,0,5),'区内通话费',charg,0)) 区内通话费
,sum(decode(substr(type,0,5),'区间通话费',charg,0)) 区间通话费
,sum(decode(substr(type,0,5),'国内长途费',charg,0)) 国内长途费
,sum(decode(substr(type,0,5),'国内IP长途',charg,0)) 国内IP长途费
from tab
group by type)
>类型不知道有哪些啊
应该是最短分组的‘类型’不知有哪些,这个要求就是设计/业务人员必须要调研的了。1、必须得确定出业务需求的最短‘类型’,之后确定这种最短‘类型’的长度,作为substr要取得的长度。
如最短‘类型’的长度=5,sql如下:
select substr(t.type, 1, 5) as 类型,
sum(charg) as 费用
from tab t
group by substr(t.type, 1, 5)
2、确定出业务需求的最短‘类型’,可以通过显示‘类型’的种类来人为推断。
sql如下:
select distinct t.type as 全部类型
from tab t
order by t.type
3、如果最短‘类型’也不止一种,就要人为判断出几种,之后按种类分组,查询后再union;
区内通话费 区间通话费 国内长途费 国内IP长途费 11816888市话费
0 0 0 0 22
0 0 0 1798 0
0 0 33 0 0
0 0 66 0 0
0 0 44 0 0
0 253 0 0 0
0 12 0 0 0
60 0 0 0 0
2773 0 0 0 0
1713 0 0 0 0
88 0 0 0 0
275 0 0 0 0
还是没有求出费用总和,比如区内通话费,应该结果是 60+2773+1713+88+275
把tongyu10068() 的内层sql的select 和group by 改一下:
select type
,sum(decode(substr(type,0,5),'区内通话费',charg,0)) 区内通话费
,sum(decode(substr(type,0,5),'区间通话费',charg,0)) 区间通话费
,sum(decode(substr(type,0,5),'国内长途费',charg,0)) 国内长途费
,sum(decode(substr(type,0,5),'国内IP长途',charg,0)) 国内IP长途费
from tab
group by type
--------------->
select substr(type,0,5)
,sum(decode(substr(type,0,5),'区内通话费',charg,0)) 区内通话费
,sum(decode(substr(type,0,5),'区间通话费',charg,0)) 区间通话费
,sum(decode(substr(type,0,5),'国内长途费',charg,0)) 国内长途费
,sum(decode(substr(type,0,5),'国内IP长途',charg,0)) 国内IP长途费
from tab
group by substr(type,0,5)
select 区内通话费
,区间通话费
,国内长途费
,国内IP长途费
from(
select substr(type,0,5)
,sum(decode(substr(type,0,5),'区内通话费',charg,0)) 区内通话费
,sum(decode(substr(type,0,5),'区间通话费',charg,0)) 区间通话费
,sum(decode(substr(type,0,5),'国内长途费',charg,0)) 国内长途费
,sum(decode(substr(type,0,5),'国内IP长途',charg,0)) 国内IP长途费
from tab
group by substr(type,0,5)
)