SQL日期区间查询
我有一个表,字段有“预付金额”“预付日期”“实付金额”“实付日期”“入库数量”“入库日期”“发票金额”“发票日期”,每一个金额对应一个日期。我想查询一个日期区间查询结果是...
我有一个表,字段有 “预付金额” “预付日期” “实付金额” “实付日期” “入库数量” “入库日期” “发票金额” “发票日期”,每一个金额对应一个日期。我想查询一个日期区间查询结果是日期区间内的各种金额数量显示出来进行汇总。求大神能帮我想到简单的办法。非常感谢!!!
我自己写的代码是
SELECT SUM( yufu.yufua ) yufuhuizong
FROM (
SELECT SUM( yufujine1 ) yufua
FROM `data`
where yufuriqi1 between '$_POST[kaishiri]' and '$_POST[zhongliaori]'
UNION ALL
SELECT SUM( yufujine2 )
FROM ...
)yufu
但是代码非常繁琐,希望大神能赐予我简便的方法,非常感谢! 展开
我自己写的代码是
SELECT SUM( yufu.yufua ) yufuhuizong
FROM (
SELECT SUM( yufujine1 ) yufua
FROM `data`
where yufuriqi1 between '$_POST[kaishiri]' and '$_POST[zhongliaori]'
UNION ALL
SELECT SUM( yufujine2 )
FROM ...
)yufu
但是代码非常繁琐,希望大神能赐予我简便的方法,非常感谢! 展开
3个回答
展开全部
--你想要的是不是这样?
--适用于SQL Server
declare @date1 datetime, @date2 datetime
set @date1 = '20140101'
set @date2 = '20140131'
select @date1 date1, @date2 date2,
sum(case when 预付日期 >=@date1 and 预付日期<=@date2 then 预付金额 else 0 end) 预付金额,
sum(case when 实付日期 >=@date1 and 实付日期<=@date2 then 实付金额 else 0 end) 实付金额,
sum(case when 入库日期 >=@date1 and 入库日期<=@date2 then 入库数量 else 0 end) 入库数量,
sum(case when 发票日期 >=@date1 and 发票日期<=@date2 then 发票金额 else 0 end) 发票金额
from table1
--适用于SQL Server
declare @date1 datetime, @date2 datetime
set @date1 = '20140101'
set @date2 = '20140131'
select @date1 date1, @date2 date2,
sum(case when 预付日期 >=@date1 and 预付日期<=@date2 then 预付金额 else 0 end) 预付金额,
sum(case when 实付日期 >=@date1 and 实付日期<=@date2 then 实付金额 else 0 end) 实付金额,
sum(case when 入库日期 >=@date1 and 入库日期<=@date2 then 入库数量 else 0 end) 入库数量,
sum(case when 发票日期 >=@date1 and 发票日期<=@date2 then 发票金额 else 0 end) 发票金额
from table1
追问
大神你好 你这种方法实在是太牛逼了,但是我用的是mysql 不知道能不能用这种方法 如果不能 mysql有类似的方法吗? 而且你写的这个是存储过程 直接用sql语句是很难完成我的要求的是不是? 谢谢大神
追答
我刚才百度了一下,mySql 也是支持case when 语句的, 其他的像聚合函数之类的肯定都支持,这个不是存储过程啊,如果你看着费劲可以把里面的变量都换回那些字符串,类似这样
.....
sum(case when 预付日期 >='20140101' and 预付日期<='20140131' then 预付金额 else 0 end) 预付金额,
.....
另外表名,列名请换回你的表名列句,我这里写成了中文/table1
展开全部
select * from 借阅信息表 where 编号 between #2006-6-9# and #2008-9-9#
或者
select * from 借阅信息表 where 编号 between "2006-6-9" and "2008-9-9"
请采纳答案,支持我一下。
或者
select * from 借阅信息表 where 编号 between "2006-6-9" and "2008-9-9"
请采纳答案,支持我一下。
追问
哥哥 我也知道这么写 但是我的表结构是写在一起的日期和时间 我想分别汇总 请问如何区分呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你说的分别汇总是什么意思?那4个金额,在你的语句里面的意思就是分开统计的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询