SQL查询语句 以及筛选方法

来源:百度知道 编辑:UC知道 时间:2024/05/28 16:09:08
在一张表中 有5列 分别是1,日期(datetime) 2,月份(varchar)3,项目(varchar) 4,预算金额(numeric) 5,发生费用(numeric) 括号内的是数据类型。
现在需要汇总出2个数字 预算金额汇总 于实际费用汇总。
一个月份只有一个预算金额 而一个月份中会有多笔实际费用对因该月的预算金额。

要求:
查询 一月份 某项目时 就是一月份 该项目 预算金额于实际金额的汇总。
查询 二月份 某项目时 就是一月份与二月份 该项目 预算金额于实际金额的汇总。
查询 三月份 某项目时 就是一月份与二月份与三月份 该项目 预算金额于实际金额的汇总。
以此类推 一直到十二月份。

也就是说在累加时,实际费用需要全部累加而预算金额就只累加不同月份的数字 同月份的不再累加。

有社么算法可以做到这些个要求 或着需要分成2部分查询。
回1楼:
可以改表的话就不会这么头大了,原本是想作12次比较 是一月就查选一月的,是二月就查询一,二月的,笨就笨点了。可这里有个预算金额同月份只取一次我真不知道该则么办了。

你的表的月份不是数字型的,这个比较麻烦,如果是数字的话,一条语句就能实现。
给你个思路,你可以导出临时表,然后把月份更新成数字,那样就比较省事了。假设你导出的临时表中的月份已经更新成1、2、3...12的形式。

select a.月份,a.项目,
(select sum(预算金额) from (select 月份,项目,max(预算金额) as 预算金额 from 临时表 group by 月份,项目) b where 月份<=a.月份 and 项目=a.项目) as 预算总额,
(select sum(发生费用) from 临时表 where 月份<=a.月份 and 项目=a.项目) as 发生总额
from 临时表 a
group by a.月份,a.项目

这是一条语句列出各月、各项目的数据情况,如果需要指定月份和项目,则在where 中限定即可。

把表改了吧 这样最简单!~

月份是字符型的 太难比较了!~

要不就写个函数 自己判断吧!~