以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  统计不重复值计数  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=92187)

--  作者:fubblyc
--  发布时间:2016/10/28 10:45:00
--  统计不重复值计数

因为foxtable自带的统计功能不能统计 不重复的计数值,

所以想这样做:

 

一个订单明细视图,想增加一个列,用来写单数:


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

 

类似与excel表格的if函数,如果和上一行一样,就写0,不一样,就写1.

在sql能实现吗?


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

--  作者:fubblyc
--  发布时间:2016/10/29 11:50:00
--  

可以了,谢谢 有点蓝  老师!!


--  作者:fubblyc
--  发布时间:2016/11/14 10:04: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.[销售明细]

 

提示错误:单号 对象名 无效


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20161114100538.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/11/14 10:06:06编辑过]

--  作者:有点蓝
--  发布时间: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.[销售明细]


--  作者:fubblyc
--  发布时间:2016/11/14 10:49:00
--  

靠,原来是这个低级错误。。。不好意思。。

 

这样是可以,但是加载速度超级慢。

 

用第一种的直接在 数据表 update 是不是会快一点。


--  作者:有点色
--  发布时间:2016/11/14 10:52:00
--  

 不要每次都重复查。

 

 直接update一次,查询的时候直接查。


--  作者:fubblyc
--  发布时间:2016/11/14 10:58:00
--  
好的,谢谢 有点蓝,有点色 老师!!
--  作者:fubblyc
--  发布时间:2016/11/14 13:58:00
--  

为什么如下代码需要执行两次才会有结果:

Dim cm d As New SQLCommand

cmd.commandtext = "updat e {销售明细} set 单数 = 1 where 单数 is null"
cmd.ExecuteNonQuery()
DataTables("销售明细").Load()

 

执行一次没有反应

[此贴子已经被作者于2016/11/14 14:01:17编辑过]

--  作者:有点青
--  发布时间:2016/11/14 16:11:00
--  

 可能是延迟问题。等一等看行不行

 

Dim cm d As New SQLCommand

cmd.commandtext = "updat e {销售明细} set 单数 = 1 where 单数 is null"
cmd.ExecuteNonQuery()

 

msgbox(333)


DataTables("销售明细").Load()