Foxtable(狐表)用户栏目专家坐堂 → 统计不重复值计数


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

主题:统计不重复值计数

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107850 积分:548607 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/28 11:03:00 [显示全部帖子]

重复的更新为0
update {表C} set 第二列='0' where 第一列 in (select 第一列 from {表C} group by 第一列 having count(*) > 1) and [_Identify] not in  (select min([_Identify]) from {表C} group by 第一列 having count(*) > 1)

剩下的全部更新为1
update {表C} set 第二列='1' where 第二列 is null

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107850 积分:548607 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/14 10:29:00 [显示全部帖子]

SELEC T
[门店],
[单号],
_Identify,
case when ([单号] in (selec t [单号] from dbo.[销售明细] group by [单号] having count(*) > 1) and [_Identify] not in  (selec t min([_Identify]) from [
销售明细] group by [单号] having count(*) > 1)) then 0 end as 单数

FROM
dbo.[销售明细]


 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107850 积分:548607 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/14 22:22:00 [显示全部帖子]

不知道你的业务逻辑是什么,具体要实现什么功能。

不过批量插入可以参考一下:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=84350

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107850 积分:548607 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/14 23:03:00 [显示全部帖子]

1、在插入之前就把单数 为空的置为1

2、单数加上索引试试
插入之前先取得最大的主键值,然后sql

updat e 销售明细 s et 单数 = 1 wher e 主键 > 插入前的最大值 and 单数 is null



 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107850 积分:548607 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/15 10:18:00 [显示全部帖子]

1、试试
cmd.commandtext = "updat e 销售明细 set 单数 = 0 where _Identify > " & val & " And 单号 In (Selec t 单号 from 销售明细 where _Identify > " & val & " group by 单号 having count(*) > 1) And [_Identify] not In  (Selec t min([_Identify]) from 销售明细 where _Identify > " & val & " group by 单号 having count(*) > 1) And 单数 Is null "

2、第一种方法,参考,不过需要对应的单号都要加载
Tables("表A").RepeatFilter("单号",1)
For Each r As Row In Tables("表A").Rows
    r("单数") = 1
Next
DataTables("表A").ReplaceFor("单数",0,"单数 is null")
Tables("表A").ApplyFilter = False

[此贴子已经被作者于2016/11/15 10:19:43编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107850 积分:548607 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/15 10:23:00 [显示全部帖子]

sql用到了in和分组,所以基本都是全表扫描,效率比较低。或者考虑用存储过程处理吧,在存储过程里使用游标循环处理看会不会好点

 回到顶部