以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]S elect 语句求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=150708)

--  作者:huangfanzi
--  发布时间:2020/6/5 12:51:00
--  [求助]S elect 语句求助
项目中要算客户的欠款利息,现在的思路是算出每天的欠款金额并根据利率算出利息,如下图所示,我希望能让用户输入一个时间段,直接查询出这个时间段内每天的欠款金额,现在算每一天的欠款金额没有问题,就是不如如何运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编辑过]

--  作者:有点蓝
--  发布时间: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
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2020/6/5 14:52:00
--  
如果选择的日期多了,得拼多长的语句,何况效率也不高。有空还是建议琢磨一下上面网页里递归sql的用法