sql语句的问题

wuxiuxiang 2010-10-11 10:35:58
今天看到一个数据库查询结果问题
有一个表shouru 字段包括单位名称,收入,收入日期
还有一个表xiaoshou 字段包括单位名称,销售,销售日期
要求查询出结果是这样的
单位名称 一月 二月 。。。。。。。 十一月 十二月
收入 销售 收入 销售 收入 销售 收入 销售

请各位来告诉我该怎么写啊,这个sql语句啊
...全文
148 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuxiuxiang 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wkc168 的回复:]
引用楼主 wuxiuxiang 的回复:
今天看到一个数据库查询结果问题
有一个表shouru 字段包括单位名称,收入,收入日期
还有一个表xiaoshou 字段包括单位名称,销售,销售日期
要求查询出结果是这样的
单位名称 一月 二月 。。。。。。。 十一月 十二月
收入 销售 收入 销售 收入 销售 收入 销售

请各位来告诉我该怎么写啊,这个sql语句啊


SQL c……
[/Quote]

用这个测试了一下,出现如下错误
where a.单位名称=b.单位名称 and to_char(a.收入日期,'mm')=to_char(b.销售日期,'mm')
*
ERROR 位于第 4 行:
ORA-01722: 无效数字

销售表里有销售日期字段啊, 怎么回事呢
minitoy 2010-10-12
  • 打赏
  • 举报
回复
先用group by生成 单位名称,月份,收入类型(收入,销售),金额 这样形式的基础表,
然后单位名称做横列,月份,收入类型做纵列,金额放到值列表就可以了.
gelyon 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wkc168 的回复:]
引用楼主 wuxiuxiang 的回复:
今天看到一个数据库查询结果问题
有一个表shouru 字段包括单位名称,收入,收入日期
还有一个表xiaoshou 字段包括单位名称,销售,销售日期
要求查询出结果是这样的
单位名称 一月 二月 。。。。。。。 十一月 十二月
收入 销售 收入 销售 收入 销售 收入 销售

请各位来告诉我该怎么写啊,这个sql语句啊


SQL c……
[/Quote]

顶!
minitoy 2010-10-12
  • 打赏
  • 举报
回复
仔细看了下,你这个直接用sql没法得到结果,需要使用交叉表.
[Quote=引用楼主 wuxiuxiang 的回复:]
今天看到一个数据库查询结果问题
有一个表shouru 字段包括单位名称,收入,收入日期
还有一个表xiaoshou 字段包括单位名称,销售,销售日期
要求查询出结果是这样的
单位名称 一月 二月 。。。。。。。 十一月 十二月
收入 销售 收入 销售 收入 销售 收入 销售

请各位来告诉我该怎么写啊,这个sql语句啊
[/Quote]
心中的彩虹 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 wuxiuxiang 的回复:]
今天看到一个数据库查询结果问题
有一个表shouru 字段包括单位名称,收入,收入日期
还有一个表xiaoshou 字段包括单位名称,销售,销售日期
要求查询出结果是这样的
单位名称 一月 二月 。。。。。。。 十一月 十二月
收入 销售 收入 销售 收入 销售 收入 销售

请各位来告诉我该怎么写啊,这个sql语句啊
[/Quote]


select a.单位名称,
'收入 '||sum(decode(to_char(a.收入日期,'mm'),'01',a.收入))||' '||'销售 '||sum(decode(to_char(b.销售日期,'mm'),'01',b.销售)) "一月",
....
'收入 '||sum(decode(to_char(a.收入日期,'mm'),'12',a.收入))||' '||'销售 '||sum(decode(to_char(b.销售日期,'mm'),'12',b.销售)) "十二月"
from shouru a,xiaoshou b
where a.单位名称=b.单位名称 and to_char(a.收入日期,'mm')=to_char(b.销售日期,'mm')
group by a.单位名称





minitoy 2010-10-12
  • 打赏
  • 举报
回复
select a.单位名称
,sum(case when to_char(a.收入日期,'mm')='01' then a.收入 end) 一月收入
,sum(case when to_char(b.销售日期,'mm')='01' then b.销售 end) 一月销售
...
from shouru a,xiaoshou b
where a.单位名称=b.单位名称 and to_char(a.收入日期,'yyyy')='2010' and to_char(b.销售日期,'yyyy')='2010'
group by a.单位名称
;
wuxiuxiang 2010-10-12
  • 打赏
  • 举报
回复
就是对每个月销售,收入进行统计,在数据库中销售日期和收入日期存的不是‘一月’,‘二月’,。。。而是‘2010-01-01 15:10:500’,'2010-01-05 10:10:500' ,'2010-02-01 11:23:700',........
心中的彩虹 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wuxiuxiang 的回复:]
引用 7 楼 wkc168 的回复:
引用楼主 wuxiuxiang 的回复:
今天看到一个数据库查询结果问题
有一个表shouru 字段包括单位名称,收入,收入日期
还有一个表xiaoshou 字段包括单位名称,销售,销售日期
要求查询出结果是这样的
单位名称 一月 二月 。。。。。。。 十一月 十二月
收入 销售 收入 销售 收入 销售 收入 销售

请各位来告诉我该怎么写啊……
[/Quote]
两个表的日期是什么字段 不是date的要转为date
to_char(a.收入日期,'mm')=to_char(b.销售日期,'mm')
虫洞 2010-10-11
  • 打赏
  • 举报
回复
人家可能是要做个报表
就像用excel一样,一个列还区分成几个子项
gelyon 2010-10-11
  • 打赏
  • 举报
回复
估计如一楼的需求,
但是为什么楼主要这样写呢:

单位名称 一月 二月 。。。。。。。 十一月 十二月
收入 销售 收入 销售 收入 销售 收入 销售
gelyon 2010-10-11
  • 打赏
  • 举报
回复
没明白。。说具体点嘛 给点测试数据和结果
虫洞 2010-10-11
  • 打赏
  • 举报
回复

select a.单位名称
,sum(case when a.收入日期='一月' then a.收入 end) 一月收入
,sum(case when b.销售日期='一月' then b.销售 end) 一月销售
,sum(case when a.收入日期='二月' then a.收入 end) 二月收入
,sum(case when b.销售日期='二月' then b.销售 end) 二月销售
,sum(case when a.收入日期='三月' then a.收入 end) 三月收入
,sum(case when b.销售日期='三月' then b.销售 end) 三月销售
...
from shouru a,xiaoshou b
where a.单位名称=b.单位名称
group by a.单位名称
;

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧