Oracla 根据条件动态查询多列之和

[复制链接]
查看11 | 回复9 | 2012-10-9 18:11:48 | 显示全部楼层 |阅读模式
我数据库表中有12列(JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,DEC,NOV)分别存1-12月份数据,需用根据两个日期时间段查询,查询结果为这两个时间段对应的列之和,如:
2012-01-2012 - 03 结果为 JAN,FEB,MAR 三列之和
各位大侠有没有比较简单的方法可以解决,谢谢了.

回复

使用道具 举报

千问 | 2012-10-9 18:11:48 | 显示全部楼层
2012-01-2012 - 03是参数?
回复

使用道具 举报

千问 | 2012-10-9 18:11:48 | 显示全部楼层
maoweiting 发表于 2012-9-26 10:48
2012-01-2012 - 03是参数?

对是个日期参数
回复

使用道具 举报

千问 | 2012-10-9 18:11:48 | 显示全部楼层
union all ?
回复

使用道具 举报

千问 | 2012-10-9 18:11:48 | 显示全部楼层
本帖最后由 〇〇 于 2012-9-26 11:07 编辑
设计表结构的该打,先列转行,再计算

回复

使用道具 举报

千问 | 2012-10-9 18:11:48 | 显示全部楼层
〇〇 发表于 2012-9-26 11:05
直接把12列都加起来不就行了

不可以呀,要根据条件查询,如果条件是2012-5月 到2012- 8月 就相加5月到8月的
回复

使用道具 举报

千问 | 2012-10-9 18:11:48 | 显示全部楼层
hgh7655529 发表于 2012-9-26 11:07
不可以呀,要根据条件查询,如果条件是2012-5月 到2012- 8月 就相加5月到8月的

我没看清,你的回复太快了,再看5楼
回复

使用道具 举报

千问 | 2012-10-9 18:11:48 | 显示全部楼层
我举个例子:
查询条件: 起始日期:2012-01 截止日期: 2012-05
查询结果 : sum(1月+2月+3月+4月+5月)
查询条件: 起始日期:2012-02 截止日期: 2012-03
查询结果 : sum(2月+3月)
回复

使用道具 举报

千问 | 2012-10-9 18:11:48 | 显示全部楼层
〇〇 发表于 2012-9-26 11:05
设计表结构的该打,先列转行,再计算

因为这是一条年记录,谢谢提醒,我试试!
回复

使用道具 举报

千问 | 2012-10-9 18:11:48 | 显示全部楼层
暂时想到两个:
1、变成竖表 sum。
2、每列去做case when了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行