我搜索和搜索,似乎无法弄清这个问题: 我们有三个表中有我需要收集并显示在视图中的数据。SQL Server 2005查询通过日期删除重复
SELECT
C.FirstName, C.LastName,
aspnet_Membership.LoweredEmail,
MAX(Bill.Code) AS BCodes,
MAX(Bill.BillDate)
FROM
dbo.Client C
INNER JOIN
dbo.Bill ON C.Id = Bill.BId
INNER JOIN
dbo.aspnet_Membership ON aspnet_Membership.UserId = C.UserGUID
WHERE
((Bill.Code='ASDF'
OR Bill.Code='XYZ'
OR Bill.Code='QWE'
OR Bill.Code='JKL')
AND C.LastName!='Unassigned')
GROUP BY
LastName, FirstName, LoweredEmail, Code, BDate
客户表有:FirstName LastName and UserGuid
比尔表有:BCode, BillDate
aspnet_Membership表有:E-mail, UserId
结果:
FirstName LastName E-mail BCode BillDate
FName1 Lname1 [email protected] XYZ 2010-05-13 00:00:00.000
Fname2 Lname2 [email protected] XYZ 2010-06-05 00:00:00.000
Fname2 Lname2 [email protected] ASD 2008-09-17 12:01:45.407
正如你可以看到Fname2
小号升起两倍,唯一的区别是在BCode
和BillDate
。
我怎样才能让这个去与最新的日期,所以我得到Fname2
记录与XYZ的Bcode与日期2010-06-05。
任何帮助将不胜感激,谢谢你提前。
你的groupby BCode让你有这种行为。不知何故,如果你可以从你的groupby中删除代码,它应该没问题。 – 2011-02-03 09:13:12
而且BDate也是。基本上,如果你正在聚合一个列(使用MAX,SUM等),不要把它放在GROUP BY中,反之亦然。 – 2011-02-03 10:34:26