Foxtable(狐表)用户栏目专家坐堂 → [求助]S elect 语句求助


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

主题:[求助]S elect 语句求助

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]S elect 语句求助  发帖心情 Post By:2020/6/5 12:51:00 [只看该作者]

项目中要算客户的欠款利息,现在的思路是算出每天的欠款金额并根据利率算出利息,如下图所示,我希望能让用户输入一个时间段,直接查询出这个时间段内每天的欠款金额,现在算每一天的欠款金额没有问题,就是不如如何运UNION把每天的查询结果组合到一起,就是说让用户统计起始录入2020-6-1,统计结束录入2020-6-3,然后3天的结果显示在一起
另外,查询表中我加了一个“统计日期”列,如何让这个统计日期等于 rq1

zd = "属性,类型,合同编号,合同附属编号,合同关联编号,我方简称,对方简称,类别,品名,规格,单位"

Do While rq1 <= rq2  'rq1统计起始日期 rq2是统计结束日期
    Dim flt As String = "审核=1 And 属性 = '对外' And 类型 = '销售' And 结算类型 = '应收应付' And 结算日期 <= '" & rq1 & "'"
    ppsz = ",ISNULL((S elect Sum(金额) from {收支录入} d where d.合同编号 = a.合同编号 And d.日期 <= '" & rq1 & "' And d.审核 = 1),0) As 已收金额,ISNULL((S elect Sum(结算含税金额) from {业务结算} b where b.合同编号 = a.合同编号  And b.结算日期 <= '" & rq1 & "' And b.审核 = 1 And b.结算类型 = '应收应付'),0) - ISNULL((S elect Sum(金额) from {收支录入} d where d.合同编号 = a.合同编号  And d.日期 <= '" & rq1 & "' And d.审核 = 1),0) As 应收金额"
    t.Fill("s elect '2020-1-1' As 统计日期," & zd & ",Sum(结算含税金额) As 结算含税金额" & ppsz & " From {业务结算} As a Where " & flt & " GROUP BY "  & zd ,"ShcsErpSql",True)
    rq1 = rq1.AddDays(1)
Loop


图片点击可在新窗口打开查看此主题相关图片如下:123.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2020/6/5 12:53:38编辑过]

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


加好友 发短信
等级:超级版主 帖子:106199 积分:540118 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/5 14:01:00 [只看该作者]

方法1、加载数据后按照流水账单方法使用代码计算:http://www.foxtable.com/webhelp/topics/2136.htm
2、上传实例测试,或者自己看看:https://www.cnblogs.com/mylhei/articles/1978184.html

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/6/5 14:20:00 [只看该作者]

解决了
zd = "属性,类型,合同编号,合同附属编号,合同关联编号,我方简称,对方简称,类别,品名,规格,单位"

Do While rq1 <= rq2
    Dim flt As String = "审核=1 And 属性 = '对外' And 类型 = '销售' And 结算类型 = '应收应付' And 结算日期 <= '" & rq1 & "'"
    ppsz = ",ISNULL((S elect Sum(金额) from {收支录入} d where d.合同编号 = a.合同编号 And d.日期 <= '" & rq1 & "' And d.审核 = 1),0) As 已收金额,ISNULL((S elect Sum(结算含税金额) from {业务结算} b where b.合同编号 = a.合同编号  And b.结算日期 <= '" & rq1 & "' And b.审核 = 1 And b.结算类型 = '应收应付'),0) - ISNULL((S elect Sum(金额) from {收支录入} d where d.合同编号 = a.合同编号  And d.日期 <= '" & rq1 & "' And d.审核 = 1),0) As 应收金额"
    cx = cx & " UNION s elect '" & rq1 & "' As 统计日期," & zd & ",Sum(结算含税金额) As 结算含税金额" & ppsz & " From {业务结算} As a Where " & flt & " GROUP BY "  & zd 
    
    rq1 = rq1.AddDays(1)
Loop
cx = cx.Remove(0,6)

t.Fill(cx,"ShcsErpSql",True)
[此贴子已经被作者于2020/6/5 14:22:55编辑过]

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


加好友 发短信
等级:超级版主 帖子:106199 积分:540118 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/5 14:52:00 [只看该作者]

如果选择的日期多了,得拼多长的语句,何况效率也不高。有空还是建议琢磨一下上面网页里递归sql的用法

 回到顶部