现在有4张表,销售表、进货表、企业支出费用表、其他费用表 ,现在客户要求算出当月每天的利润,
利润=销售额(销售表中)-进货成本(进货表)-支出费用(企业支出费用表)-其他费用(其他费用表),
要显示一个月中每天的利润,求写sql 语句。
用sql 实现报表查询
答案:4 悬赏:80 手机版
解决时间 2021-02-24 10:13
- 提问者网友:十年饮冰
- 2021-02-24 06:11
最佳答案
- 五星知识达人网友:山君与见山
- 2021-02-24 06:17
select sales.a,sales.b - inbuy.b - cost1.b - cost2.b
from
(select date as a,sum(销售额) as b from 销售表 where date between 开始日期 and 结束日期 group by date ) as sales,
(select date as a,sum(进货额) as b from 进货表 where date between 开始日期 and 结束日期 group by date) as inbuy,
(select date as a,sum(支出额) as b from 企业支出费用表 where date between 开始日期 and 结束日期 group by date) as cost1,
(select date as a,sum(费用额) as b from 其他费用表 where date between 开始日期 and 结束日期 group by date) as cost2
where
sales.a = inbuy.a and
sales.a = cost1.a and
sales.a = cost2.a
from
(select date as a,sum(销售额) as b from 销售表 where date between 开始日期 and 结束日期 group by date ) as sales,
(select date as a,sum(进货额) as b from 进货表 where date between 开始日期 and 结束日期 group by date) as inbuy,
(select date as a,sum(支出额) as b from 企业支出费用表 where date between 开始日期 and 结束日期 group by date) as cost1,
(select date as a,sum(费用额) as b from 其他费用表 where date between 开始日期 and 结束日期 group by date) as cost2
where
sales.a = inbuy.a and
sales.a = cost1.a and
sales.a = cost2.a
全部回答
- 1楼网友:有你哪都是故乡
- 2021-02-24 08:36
4张表,销售表、进货表、企业支出费用表、其他费用表 是怎么关联的?用哪个字段?
- 2楼网友:等灯
- 2021-02-24 07:30
给你一个例子 基本可以传递参数 到水晶报表 可以查询 并且可以将参数字段显示为你需要的值
以前采用vb6做的动态传递水晶报表参数字段,存在一个缺陷就是在设计水晶报表的时候没有按照注释的那里写的(直接拖参数字段到预览的界面)就不会出现水晶报表提示要输入离散值的消息框。其实也不完全是这样的,有时我按照这种方式操作仍然有这个输入离散值消息框的提示,具体是什么原因造成的还不是很清楚,估计开发水晶报表的明白内部机制的原因,我只想能顺畅的使用就可以了,可出现不相关的输入提示就直接影响到客户使用程序。
我在做dotnet2005时用的是水晶报表10,在传递参数后。有加入了设置显示报表控件的参数对象集合为传递的参数值【crviewer91.parameterfieldinfo = m_report.parameterfields 】运行程序就没有这个输入离散值的提示。vb6使用水晶报表9.0不知道加入这个设置是否能解决问题。暂时我还没有条件测试主要是计算机上没有安装水晶报表9,不过也是一种解决这个问题的办法。先在这里保存起来,待有条件了测试下,没有这条语句可能在设计报表rpt文件的时候和程序动态调用可就要来回的测试了 。 哈~~~~~~
private sub displayreport1()
'' ==========================================================
' 开发人员:段利庆
' 编写时间:2008-09-01
' 过程名称:displayreport
' 参数说明:
' 功能说明:动态载入水晶报表文件(*.rpt)显示打印预览
'
' 其他说明:程序采用的是crystal reports 9.1版本
' 工程引用:crystal reports 9 activex designer design and runtime library
' 控件:crviewer91
'
'
'' ==========================================================
'*中央错误处理
on error goto proc_err
dim m_application as new craxddrt.application
dim m_report as craxddrt.report
dim strsql as string
strsql = "select * from 视图_收费_计量仪表 "
dim strrptpath as string
strrptpath = app.path & "\crystal_rpt_para\sell_meter.rpt"
debug.print "strrptpath:" & strrptpath
set m_report = nothing
set m_report = m_application.openreport(strrptpath, 1)
'*防止弹出水晶报表数据库登录对话框
m_report.database.tables.item(1).testconnectivity
m_report.database.tables.item(1).connectbufferstring = objdata.connectionstring
m_report.sqlquerystring = strsql
'****************************************************
'*参数字段传递参数
'*
'*搞了2天了终于找到原因了 08-09-03
'*1.在新建一个参数字段,一定要直接拖放到预览里面
'* 否则拖到设计里面就要弹出输入离散值的消息框
'*
'*2.getitembyname("myparat") 参数是参数字段的名称
'*
m_report.discardsaveddata
m_report.parameterfields.getitembyname("myparat").clearcurrentvalueandrange
m_report.parameterfields.getitembyname("myparat").addcurrentvalue (text1.text)
m_report.parameterfields.getitembyname("k1").clearcurrentvalueandrange
m_report.parameterfields.getitembyname("k1").addcurrentvalue (text1.text)
m_report.parameterfields.getitembyname("k2").clearcurrentvalueandrange
m_report.parameterfields.getitembyname("k2").addcurrentvalue (text1.text)
'*-----------------------------------------------------
'* 以下这句是否能彻底解决弹出离散值输入框问题
'*是根据vb2005 crystal report10 顺畅的处理结果得出的
'*2009-08-26
'crviewer91.parameterfieldinfo = m_report.parameterfields
'*传递的对象 用下面的语句
'*set crviewer91.parameterfieldinfo = m_report.parameterfields
'*-----------------------------------------------------
'****************************************************
crviewer91.displaygrouptree = false
crviewer91.reportsource = m_report
crviewer91.zoom 1
crviewer91.viewreport
'*结束子程序
proc_exit:
exit sub
'*错误处理,显示出错信息
proc_err:
msgbox " errnumber: " & err.number & vbcrlf & _
"errdescription: " & err.description & vbcrlf & _
" module: " & me.caption & vbcrlf & _
" procedure: " & "displayreport"
goto proc_exit
end sub
- 3楼网友:由着我着迷
- 2021-02-24 07:04
SELECt x.riqi,(x.xiaoshoue - j.chengben - z.feiyong - q.qita) AS lirun FROM xiaoshou X,jinhuo j,zhichu z,qita q WHERe x.riqi = j.riqi AND x.riqi = z.riqi AND x.riqi = q.riqi
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯