我继承了一个应用程序有以下tblTradeSpends表:过滤与设
ID PromoID Customer LineOfBusiness DealYear VersionDate
1 p100 200 SCF 2013 2/23/2013
2 p101 200 SCF 2013 2/23/2013
3 p102 200 SCF 2013 2/23/2013
4 p103 200 SCF 2013 2/23/2013
5 p100 200 SCF 2013 3/23/2013
6 p101 200 SCF 2013 3/23/2013
7 p102 200 SCF 2013 3/23/2013
客户的组合,LineOfBusiness,DealYear和VersionDate一补“版本”的理念,为交易的块。以上数据说明两个版本具有以下促销标识:
Version 1 (Created 2/23/2013): p100, p101, p102, p103
Version 2 (Created 3/23/2013): p100, p101, p102
所以,当交易这个块更新,PromoID p103
交易已被删除。
我有一个屏幕,我只想显示一个交易块的最新版本。我想出了下面,我以为是工作,但实际上有一个bug:
var records = from t in query
let maxversion =
(from v in _context.tblTradeSpends
where v.PromoID == t.PromoID
select v.VersionDate).Max()
where t.PlanType == "Planner" &&
t.VersionDate == maxversion
select t
现在,由业务员的最新版本中删除了p103
交易,但因为它拥有的最大日期任何与其促销ID的交易,它正在显示。
ID PromoID Customer LineOfBusiness DealYear VersionDate
4 p103 200 SCF 2013 2/23/2013
5 p100 200 SCF 2013 3/23/2013
6 p101 200 SCF 2013 3/23/2013
7 p102 200 SCF 2013 3/23/2013
我不想在此结果集中使用p103
。如何更新我的查询,以便仅显示具有Customer,LineOfBusiness和DealYear的独特组合的最新VersionDate的记录?
UPDATE
如果没有浑水摸鱼的太多,在SQL我会通过客户#组,LineOfBusiness和DealYear,确定最大VersionDate的组,然后使用日期我的过滤器。我不确定如何在这里做同样的事情。
这是否P103行都有一个值是不常见到的其他结果?你只想删除结果集中的第p103行? –
我想删除没有版本日期等于具有相同Customer#,LineOfBusiness和DealYear的任何其他记录的最大版本日期的任何记录。那有意义吗? –
是的,但你现在的问题是,p103有一个版本日期是最大化版本,因此它被包含在列表中。MaxVersion在这里是3/23/2013? –