Foxtable(狐表)用户栏目专家坐堂 → 请教一个比对问题


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

主题:请教一个比对问题

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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
请教一个比对问题  发帖心情 Post By:2019/4/9 8:49:00 [显示全部帖子]

请教老师,想设计一个SQL比对统计,请给予指导,谢谢!

 

比如:一个Table中有一个列为客户名称,根据入档日期进行统计当年的新增客户数,如果新增的客户名称与原来的客户名称进行比对,如果重复不进行统计,如果不重复进行统计

 

客户名称       入档日期

AAA            2018-01-01

BBB            2018-02-02

CCC            2018-03-03

AAA            2018-04-04

AAA            2019-02-02

BBB            2019-02-02

DDD           2019-03-03

 

想实现统计结果,2018年新增客户数为3(这里采用不重复统计可以实现), 2019年新增客户数为1(这里的客户DDD如何与所有行进行客户名称的字符比对进行统计?)


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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2019/4/9 10:03:00 [显示全部帖子]

老师,GetValues或SQLGetValues,只是获取或统计不重复值,但是怎样比对统计某年度新出现的客户名称数量

 

比如:下面代码只能统计出不重复客户的数量,根据上面例子,得到的值是4,怎样设置条件,2019年统计出的值是1(因为2019的客户中AAA和BBB已经是老客户,在2018年已有,2019年不计入统计,2019年新客户只有DDD)

Dim Total As Integer

Dim acs As List(Of String) = Tables("客户档案").DataTable.SQLGetValues("客户名称","入档完成 = 1") '不重复合计

Total = acs.Count


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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2019/4/9 11:01:00 [显示全部帖子]

楼上的老师厉害,非等比较+字典,学习了。  另外,如何count出比如2019年的新客户数?

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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2019/4/9 11:48:00 [显示全部帖子]

甜老师,不是单纯的相减,上面另一个老师指导的代码是通过字典形式得到结果是一种方式

 

甜老师所说的相减统计是包含了其他年的同名客户的统计数量,如果19年的客户中有18年同名的不进行统计,只统计不同名的,这里不用相减,我一直没理清楚如何进行这样的后台统计


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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2019/4/9 14:47:00 [显示全部帖子]

老师,经测试,可以这样来单项统计,但不知效率影响如何

 

Dim y1 As Integer = 2019 '指定年份
Dim dt3 As New Date(y1, 1, 1)
Dim dt4 As New Date(y1, 12, 31)


Dim str As String = DataTables("客户档案").SQLGetComboListString("客户名称","入档时间 < '" & dt3 & "'")
str = str.Replace("|", "','")

Dim it As Integer
Dim kcbs As List(of String)
kcbs = DataTables("客户档案").SQLGetvalues("客户名称", "客户名称 Not In ('" & str & "') and 入档时间 >= '" & dt3 & "' And 入档时间 <= '" & dt4 & "'")
For Each s As String In kcbs
output.show(s)
Next
it = kcbs.count
messagebox.show(it)


 回到顶部