Foxtable(狐表)用户栏目专家坐堂 → [求助]Select语句,痛点


  共有3143人关注过本帖树形打印复制链接

主题:[求助]Select语句,痛点

帅哥哟,离线,有人找我吗?
cd_tdh
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
[求助]Select语句,痛点  发帖心情 Post By:2021/12/6 11:24:00 [只看该作者]

请老师帮助写个Select语句

开piao申请表有:所属机构、项目名称,开piao金额、开piao日期

进项piao录入表有:所属机构、项目名称,piao据类别(专piao、普piao)、价税合计金额、税额、税后金额、收到日期

我需要统计对应的:所属机构、项目名称,开piao日期与收到日期在同一年的开piao金额、收到的进项可抵扣增值税(专piao的税额),成本(专piao按扣税计算,普piao按价税合计金额计算)”

[此贴子已经被作者于2021/12/6 11:34:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/12/6 11:46:00 [只看该作者]

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2021.5.29.1
错误所在事件:
详细错误信息:
关键字 'As' 附近有语法错误。
')' 附近有语法错误。
关键字 'Select' 附近有语法错误。

不知道是那一个报错

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/6 11:47:00 [只看该作者]

select a.*,b.价税合计金额,b.税额 from (select 所属机构,项目名称

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/12/6 12:47:00 [只看该作者]

老师,我以下两个表的分组统计怎么用s elect语句生成一个表,

开piao申请表
Dim g As New GroupTableBuilder("统计表2", DataTables("开piao申请"))
g.Groups.AddDef("所属机构")
g.Groups.AddDef("项目名称")
g.Groups.AddDef("登记日期", DateGroupEnum.Year, "年")
g.Groups.AddDef("登记日期", "月")

g.Totals.AddDef("开piao金额")
g.Decimals = 2
g.FromServer = True
g.Build()
MainTable = Tables("统计表2")

进项piao录入表
Dim g As New GroupTableBuilder("统计表3", DataTables("进项piao录入"))
g.Groups.AddDef("所属机构")
g.Groups.AddDef("项目名称")
g.Groups.AddDef("寄达日期", DateGroupEnum.Year, "年")
g.Groups.AddDef("寄达日期", "月")

g.Groups.AddDef("fa piao类别")
g.Totals.AddDef("税价合计金额")
g.Totals.AddDef("税额")
g.Totals.AddDef("税后金额")
g.Decimals = 2
g.FromServer = True
g.Build()
MainTable = Tables("统计表3")


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/6 13:44:00 [只看该作者]

就是2楼的用法,加一个月份即可

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/12/6 16:21:00 [只看该作者]

 老师,还是不是想要的结果,我做了个excel样表,另外把三个表数据都导出来做了一个示例,请老师看看


以下内容是专门发给有点蓝浏览

分组一:按照项目名称,按照之前思路,可能会出现数据丢失,所以需要确定是有项目名称都存在的表:合同签订

[此贴子已经被作者于2021/12/6 16:23:36编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By: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月_开piao金额", Gettype(Double))
dtb.AddDef("2021年1月_税价合计金额", Gettype(Double))
dtb.AddDef("2021年1月_可抵扣增值税", Gettype(Double))
dtb.AddDef("2021年1月_可抵扣成本", Gettype(Double))
dtb.AddDef("2021年2月_开piao金额", 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月_开piao金额") = DataTables("开piao申请").Compute("Sum(开piao金额)","项目名称 = '" & nm(1) & "' And 登记日期 >= '2021-01-01' And 登记日期 <= '2021-01-31'")
    dr("2021年1月_税价合计金额") = DataTables("进项piao录入").Compute("Sum(税价合计金额)","项目名称 = '" & nm(1) & "' And 寄达日期 >= '2021-01-01' And 寄达日期 <= '2021-01-31'")
    dr("2021年1月_可抵扣增值税") = DataTables("进项piao录入").Compute("Sum(税额)","项目名称 = '" & nm(1) & "' And fa piao类别 = '专用' And 寄达日期 >= '2021-01-01' And 寄达日期 <= '2021-01-31'")
    dr("2021年1月_可抵扣成本") = dr("2021年1月_税价合计金额") - dr("2021年1月_可抵扣增值税")
    dr("2021年2月_开piao金额") = DataTables("开piao申请").Compute("Sum(开piao金额)","项目名称 = '" & nm(1) & "' And 登记日期 >= '2021-02-01' And 登记日期 <= '2021-02-28'")
    dr("2021年2月_税价合计金额") = DataTables("进项piao录入").Compute("Sum(税价合计金额)","项目名称 = '" & nm(1) & "' And 寄达日期 >= '2021-02-01' And 寄达日期 <= '2021-02-28'")
    dr("2021年2月_可抵扣增值税") = DataTables("进项piao录入").Compute("Sum(税额)","项目名称 = '" & nm(1) & "' And fa piao类别 = '专用' And 寄达日期 >= '2021-02-01' And 寄达日期 <= '2021-02-28'")
    dr("2021年2月_可抵扣成本") = dr("2021年2月_税价合计金额") - dr("2021年2月_可抵扣增值税")
Next

MainTable= Tables("统计")


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/6 17:35:00 [只看该作者]

没有办法直接生成这种效果表,只能按照sql生成查询表,然后再做一个交叉统计

select a.*,b.税价合计金额,b.税额 from (select 所属机构,项目名称,year(登记日期) as 年,month(登记日期) as 月,sum(开piao金额) as 开piao金额 from {开piao申请} group by 所属机构,项目名称,year(登记日期),month(登记日期) ) as a inner join ( select 所属机构,项目名称,year(登记日期) as 年,month(登记日期) as 月,sum(税价合计金额) as 税价合计金额,sum(税额) as 税额 from {进项piao录入} group by 所属机构,项目名称,year(登记日期),month(登记日期)) as b on  a.所属机构=b.所属机构 where a.项目名称=b.项目名称 and a.年=b.年 and a.月=b.月

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  10楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By: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 & "月_开piao金额" , 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 & "月_开piao金额") = DataTables("开piao申请").Compute("Sum(开piao金额)","项目名称 = '" & nm(1) & "' And "登记日期" .Month" = i")
    dr(d.Year & "年" & i & "月_税价合计金额") = DataTables("进项piao录入").Compute("Sum(税价合计金额)","项目名称 = '" & nm(1) & "' And 寄达日期.Month = i")
    dr(d.Year & "年" & i & "月_可抵扣增值税") = DataTables("进项piao录入").Compute("Sum(税额)","项目名称 = '" & nm(1) & "' And fa piao类别 = '专用' And 寄达日期.Month = i")
    dr(d.Year & "年" & i & "_可抵扣成本") = dr(d.Year & "年" & i & "月_税价合计金额") - dr(d.Year & "年" & i & "月_可抵扣增值税")
Next

[此贴子已经被作者于2021/12/7 8:51:46编辑过]

 回到顶部
总数 22 1 2 3 下一页