以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  脑子突然短路了,求助..  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=46667)

--  作者:晕了快扶我
--  发布时间:2014/2/26 19:17:00
--  脑子突然短路了,求助..
把tables里所有ID号相同,但是生成时间不一样的数据行筛选出来,并且只显示离现在时间最近的代码该怎么写?
图片点击可在新窗口打开查看短路了。。。
[此贴子已经被作者于2014-2-26 20:11:39编辑过]

--  作者:有点甜
--  发布时间:2014/2/26 19:49:00
--  
 你执行这句sql可以得到ID号重复(超过2个)的记录,但是你说的生成时间不一样的数据是什么意思?用什么做标准?

 最后你说的只显示时间最近?真心理解不透

select * from (select 第一列 from {表A} group by 第一列 having count(第一列) > 1) as a inner join {表A} as b on a.第一列 = b.第一列

--  作者:晕了快扶我
--  发布时间:2014/2/26 19:55:00
--  
以下是引用有点甜在2014-2-26 19:49:00的发言:
 你执行这句sql可以得到ID号重复(超过2个)的记录,但是你说的生成时间不一样的数据是什么意思?用什么做标准?

 最后你说的只显示时间最近?真心理解不透

select * from (select 第一列 from {表A} group by 第一列 having count(第一列) > 1) as a inner join {表A} as b on a.第一列 = b.第一列



==============
ID   记录日期
1    2011-11-10
1    2011-12-1
2    2011-11-10
2    2011-12-1


筛选出来效果显示是:
ID   记录日期
1    2011-12-1
2    2011-12-1


--  作者:有点甜
--  发布时间:2014/2/26 20:06:00
--  
 呃,id=1,日期=2011-12-1,假设有2条这样的记录呢?
--  作者:晕了快扶我
--  发布时间:2014/2/26 20:10:00
--  
以下是引用有点甜在2014-2-26 20:06:00的发言:
 呃,id=1,日期=2011-12-1,假设有2条这样的记录呢?
这个不会出现的,程序的其他部分做了限定


--  作者:晕了快扶我
--  发布时间:2014/2/26 20:10:00
--  
以下是引用有点甜在2014-2-26 20:06:00的发言:
 呃,id=1,日期=2011-12-1,假设有2条这样的记录呢?
日期不是固定的,要取最大值,也就是最靠近今天的


--  作者:晕了快扶我
--  发布时间:2014/2/26 20:11:00
--  
实际运用的例子是
物料的客户报价
有机会对客户的报价会有降低或者提高,这个时候就要取最近日期的

--  作者:有点甜
--  发布时间:2014/2/26 20:23:00
--  
 这样写代码,你先试试,第一列 = id,第二列 = 日期

Dim cmd As new SQLCommand
cmd.CommandText = "select [_Identify] from (select 第一列, max(第二列) as 第二列 from {表A} group by 第一列 having count(第一列) > 1) as a left join {表A} as b on a.第一列 = b.第一列 and a.第二列 = b.第二列"
Dim dt As DataTable = cmd.ExecuteReader()
Dim idx As String = ""
For Each dr As DataRow In dt.DataRows
    idx += dr("_Identify") & ","
Next
Tables("表A").filter = "_Identify in (" & idx.trim(",") & ")"

--  作者:晕了快扶我
--  发布时间:2014/2/26 20:25:00
--  
谢谢有点甜,我用SQL筛选搞定了