Access数据库中如何建立查询,得到每月的销售,回款和发票信息

Access数据库中如何建立查询,得到每月的销售,回款和发票信息,第1张

下面一句SQL代码可以解决楼主的需求:

SELECT YEAR(T日期) AS 年份, MONTH(T日期) AS 月份, A客户编码, A客户名称, SUM(T销售额) AS 当月销售额, SUM(T回款额) AS 当月回款额, SUM(T开票金额) AS 当月开票金额 FROM (SELECT 客户编码,销售额,0 AS 回款额,0 AS 开票金额 ,销售日期 AS 日期 FROM 销售信息 UNION ALL SELECT 客户编码,0,回款额,0 ,回款日期 FROM 回款信息 UNION ALL SELECT 客户编码,0,0,开票金额 ,开票日期 FROM 发票信息)T, 客户档案 A WHERE A客户编码=T客户编码 GROUP BY A客户编码, A客户名称, YEAR(T日期), MONTH(T日期) ORDER BY YEAR(T日期), MONTH(T日期), A客户编码

如果那四张表中的数据如提问中附图所示,那么返回结果集如下图所示

上机试一试吧

这个time()函数是将时间保存成时间戳格式,则要查当月数据,只要查当月第一天到当月最后一天的之间的数据即可。

假设这个用来判断的字段是date

sql语句

SELECT ………… WHERE………… `date` >= 本月第一天的time值 AND `date` < 下个月第一天的time值

所以这里就只要获取当月第一天以及下个月第一天的时间戳

具体如下:

<php

$cur = date('Y-m',time());//当天年月

$cur_y = date('Y',time());//当天年份

$cur_m = date('m',time());//当天月份

$cur_f = $cur '-1';//本月首日

$first = strtotime($cur_f);//时间戳最小值,本月第一天时间戳

//下月首日

if($cur_m>=12){

$cur_n = ($cur_y+1) '-1-1';

}else{

$cur_n = $cur_y '-' ($cur_m+1) '-1';

}

$last = strtotime($cur_n);//时间戳最大值,下个月第一天时间戳

>

再把$first 和 $last 放入sql语句里面就可以查询到数据了

包含。sql是具有数据 *** 纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,sql查询包含当月的数据,通过DATEDIFF函数计算相差时间以获取正确的过滤条件来查询。

楼主好,这种东西的具体思路,通常是一个自表关联就可以解决。先找出上月数据,然后和这个月的数据做关联,然后使用where条件判定不同的地方即可。由于您没给出表结构,也没给出最后要对比哪里的不同,所以,我只能讲个思路。当然,这里麻烦的地方是,时间的处理

可以给你举个例子,假如你有一个产品销量表,表中字段有产品ID,产品名称,产品销量,时间,你想查找上个月的某个产品销量和这个月的这个产品销量是不是相同,那么可以这样做:

select a产品ID,a产品名称,a产品销量 as 上月销量,a时间,b产品销量 as 本月销量,b时间 from (

select  from 产品销量 

where convert(nvarchar(7),时间,23)=convert(nvarchar(7),datediff(month,-1,getdate()),23)

)a

full join 

(

select  from 产品销量 

where convert(nvarchar(7),时间,23)=convert(nvarchar(7),getdate(),23)

) b on a产品ID=b产品ID

where a产品ID is null or b产品ID is null or a产品销量!=b产品销量

解释一下为什么要用full join,因为有可能的是一个产品上月有销售而本月没销售,反过来也有可能本月有销售但是上月没有销售。所以这样查找才是最准确的。

这只是一个例子,如果有问题可以追问

set @x:=0;

select pdayspday, sum(tmoney)

from 

  (select pday from  

     (  select adddate(str_to_date('2013-09-01','%Y-%m-%d'),f1) as pday

        from (select  @x:=@x+1 as f1 from customer limit 1,31) t1

     ) t2 where pday<=last_day(str_to_date('2013-09-01','%Y-%m-%d'))

  ) pdays 

  left join 销售表 t on pdayspday=tdate

where tname='fff'

group by pdayspday

以上就是关于Access数据库中如何建立查询,得到每月的销售,回款和发票信息全部的内容,包括:Access数据库中如何建立查询,得到每月的销售,回款和发票信息、php中用time()函数存入时间,如何查询当月的数据、sql查询不包含当月的数据吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9716621.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存