以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- [求助]Select语句,痛点 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=173570)
|
-- 作者:cd_tdh
-- 发布时间:2021/12/6 11:24:00
-- [求助]Select语句,痛点
请老师帮助写个Select语句
开票申请表有:所属机构、项目名称,开票金额、开票日期列
进项票录入表有:所属机构、项目名称,票据类别(专票、普票)、价税合计金额、税额、税后金额、收到日期列
我需要统计对应的:所属机构、项目名称,开票日期与收到日期在同一年的开票金额、收到的进项可抵扣增值税(专票的税额),成本(专票按扣税计算,普票按价税合计金额计算)”
[此贴子已经被作者于2021/12/6 11:34:34编辑过]
|
-- 作者:有点蓝
-- 发布时间:2021/12/6 11:38:00
--
select a.*,b.价税合计金额,b.税额(select 所属机构,项目名称,year(开piao日期) as 年,sum(开piao金额) as 开piao金额 from 开piao申请 group by 所属机构,项目名称,year(开piao日期) ) as a inner join(select 所属机构,项目名称,year(收到日期) as 年,sum(价税合计金额) as 价税合计金额,sum(税额) as 税额 from 进项piao录入 group by 所属机构,项目名称,year(收到日期)) as b on a.所属机构=b.所属机构 and a.项目名称=b.项目名称 and a.年=b.年
|
-- 作者:cd_tdh
-- 发布时间:2021/12/6 11:46:00
--
.NET Framework 版本:4.0.30319.42000 Foxtable 版本:2021.5.29.1 错误所在事件: 详细错误信息: 关键字 \'As\' 附近有语法错误。 \')\' 附近有语法错误。 关键字 \'Select\' 附近有语法错误。
不知道是那一个报错
|
-- 作者:有点蓝
-- 发布时间:2021/12/6 11:47:00
--
select a.*,b.价税合计金额,b.税额 from (select 所属机构,项目名称
|
-- 作者:cd_tdh
-- 发布时间:2021/12/6 12:47:00
--
老师,我以下两个表的分组统计怎么用s elect语句生成一个表,
开票申请表 Dim g As New GroupTableBuilder("统计表2", DataTables("开票申请")) g.Groups.AddDef("所属机构") g.Groups.AddDef("项目名称") g.Groups.AddDef("登记日期", DateGroupEnum.Year, "年") g.Groups.AddDef("登记日期", "月") g.Totals.AddDef("开票金额") g.Decimals = 2 g.FromServer = True g.Build() MainTable = Tables("统计表2")
进项票录入表 Dim g As New GroupTableBuilder("统计表3", DataTables("进项票录入")) g.Groups.AddDef("所属机构") g.Groups.AddDef("项目名称") g.Groups.AddDef("寄达日期", DateGroupEnum.Year, "年") g.Groups.AddDef("寄达日期", "月") g.Groups.AddDef("发票类别") g.Totals.AddDef("税价合计金额") g.Totals.AddDef("税额") g.Totals.AddDef("税后金额") g.Decimals = 2 g.FromServer = True g.Build() MainTable = Tables("统计表3")
|
-- 作者:有点蓝
-- 发布时间:2021/12/6 13:44:00
--
就是2楼的用法,加一个月份即可
|
-- 作者:cd_tdh
-- 发布时间:2021/12/6 16:21:00
--
老师,还是不是想要的结果,我做了个excel样表,另外把三个表数据都导出来做了一个示例,请老师看看
以下内容是专门发给有点蓝浏览
分组一:按照项目名称,按照之前思路,可能会出现数据丢失,所以需要确定是有项目名称都存在的表:合同签订
[此贴子已经被作者于2021/12/6 16:23:36编辑过]
|
-- 作者:cd_tdh
-- 发布时间:2021/12/6 17:31:00
--
还有个本办法就是手工编码统计,请老师看看怎么简化
Dim dtb As New DataTableBuilder("统计") dtb.AddDef("所属机构", Gettype(String), 32) dtb.AddDef("项目名称", Gettype(String), 100) dtb.AddDef("合同金额", Gettype(Double)) dtb.AddDef("2021年1月_开票金额", Gettype(Double)) dtb.AddDef("2021年1月_税价合计金额", Gettype(Double)) dtb.AddDef("2021年1月_可抵扣增值税", Gettype(Double)) dtb.AddDef("2021年1月_可抵扣成本", Gettype(Double)) dtb.AddDef("2021年2月_开票金额", Gettype(Double)) dtb.AddDef("2021年2月_税价合计金额", Gettype(Double)) dtb.AddDef("2021年2月_可抵扣增值税", Gettype(Double)) dtb.AddDef("2021年2月_可抵扣成本", Gettype(Double)) dtb.Build() For Each nm() As String In DataTables("合同签订").sqlGetValues("所属机构|项目名称|合同金额") Dim dr As DataRow = DataTables("统计").AddNew() dr("所属机构") = nm(0) dr("项目名称") = nm(1) dr("合同金额") = nm(2) dr("2021年1月_开票金额") = DataTables("开票申请").Compute("Sum(开票金额)","项目名称 = \'" & nm(1) & "\' And 登记日期 >= \'2021-01-01\' And 登记日期 <= \'2021-01-31\'") dr("2021年1月_税价合计金额") = DataTables("进项票录入").Compute("Sum(税价合计金额)","项目名称 = \'" & nm(1) & "\' And 寄达日期 >= \'2021-01-01\' And 寄达日期 <= \'2021-01-31\'") dr("2021年1月_可抵扣增值税") = DataTables("进项票录入").Compute("Sum(税额)","项目名称 = \'" & nm(1) & "\' And 发票类别 = \'专用\' And 寄达日期 >= \'2021-01-01\' And 寄达日期 <= \'2021-01-31\'") dr("2021年1月_可抵扣成本") = dr("2021年1月_税价合计金额") - dr("2021年1月_可抵扣增值税") dr("2021年2月_开票金额") = DataTables("开票申请").Compute("Sum(开票金额)","项目名称 = \'" & nm(1) & "\' And 登记日期 >= \'2021-02-01\' And 登记日期 <= \'2021-02-28\'") dr("2021年2月_税价合计金额") = DataTables("进项票录入").Compute("Sum(税价合计金额)","项目名称 = \'" & nm(1) & "\' And 寄达日期 >= \'2021-02-01\' And 寄达日期 <= \'2021-02-28\'") dr("2021年2月_可抵扣增值税") = DataTables("进项票录入").Compute("Sum(税额)","项目名称 = \'" & nm(1) & "\' And 发票类别 = \'专用\' And 寄达日期 >= \'2021-02-01\' And 寄达日期 <= \'2021-02-28\'") dr("2021年2月_可抵扣成本") = dr("2021年2月_税价合计金额") - dr("2021年2月_可抵扣增值税") Next
MainTable= Tables("统计")
|
-- 作者:有点蓝
-- 发布时间:2021/12/6 17:35:00
--
没有办法直接生成这种效果表,只能按照sql生成查询表,然后再做一个交叉统计
select a.*,b.税价合计金额,b.税额 from (select 所属机构,项目名称,year(登记日期) as 年,month(登记日期) as 月,sum(开票金额) as 开票金额 from {开票申请} group by 所属机构,项目名称,year(登记日期),month(登记日期) ) as a inner join ( select 所属机构,项目名称,year(登记日期) as 年,month(登记日期) as 月,sum(税价合计金额) as 税价合计金额,sum(税额) as 税额 from {进项票录入} group by 所属机构,项目名称,year(登记日期),month(登记日期)) as b on a.所属机构=b.所属机构 where a.项目名称=b.项目名称 and a.年=b.年 and a.月=b.月
|
-- 作者:cd_tdh
-- 发布时间:2021/12/7 8:50:00
--
老师,sql语句对我太难了,直接放弃,改用代码手工统计应该最方便,数据表生成没问题了,但是统计哪儿需要核对登记日期的月与i是同月,请老师看看,条件哪儿和代码逻辑应该怎么修改?
Dim d As Date = Date.Today Dim i As Integer Dim dtb As New DataTableBuilder("统计") dtb.AddDef("所属机构", Gettype(String), 32) dtb.AddDef("项目名称", Gettype(String), 100) dtb.AddDef("合同金额", Gettype(Double)) For i = 1 To d.Month dtb.AddDef(d.Year & "年" & i & "月_开票金额" , Gettype(Double)) dtb.AddDef(d.Year & "年" & i & "月_税价合计金额" , Gettype(Double)) dtb.AddDef(d.Year & "年" & i & "月_可抵扣增值税" , Gettype(Double)) dtb.AddDef(d.Year & "年" & i & "月_可抵扣成本" , Gettype(Double)) Next dtb.Build()
For Each nm() As String In DataTables("合同签订").sqlGetValues("所属机构|项目名称|合同金额") Dim dr As DataRow = DataTables("统计").AddNew() dr("所属机构") = nm(0) dr("项目名称") = nm(1) dr("合同金额") = nm(2) dr(d.Year & "年" & i & "月_开票金额") = DataTables("开票申请").Compute("Sum(开票金额)","项目名称 = \'" & nm(1) & "\' And "登记日期" .Month" = i") dr(d.Year & "年" & i & "月_税价合计金额") = DataTables("进项票录入").Compute("Sum(税价合计金额)","项目名称 = \'" & nm(1) & "\' And 寄达日期.Month = i") dr(d.Year & "年" & i & "月_可抵扣增值税") = DataTables("进项票录入").Compute("Sum(税额)","项目名称 = \'" & nm(1) & "\' And 发票类别 = \'专用\' And 寄达日期.Month = i") dr(d.Year & "年" & i & "_可抵扣成本") = dr(d.Year & "年" & i & "月_税价合计金额") - dr(d.Year & "年" & i & "月_可抵扣增值税") Next
[此贴子已经被作者于2021/12/7 8:51:46编辑过]
|