以文本方式查看主题 - 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筛选搞定了 |