我有一个已注册参加一系列事件的联系人数据库。该数据库还包含一个地址信息表。通常,单个联系人具有多个地址记录。如何在记录中选择最短日期值
我需要一个查询返回个人的事件预订,以及从他们最近的地址记录(相对于事件日期)的邮编。
我试图在下面的查询中使用min(DATEDIFF),但虽然它正确计算事件预订和地址记录创建之间的日期差异,但查询仍然返回重复结果,其中一个人有多个地址记录。
感激,如果任何人都可以请告知哪里,我在下面的查询脚麻,或更好的方法建议以获得结果:
SELECT ep.EVENTPLACENO, ad.POSTCODE, min(DATEDIFF(dd,ep.CREATIONDATE,ad.CREATIONDATE)) as datediff
FROM EVENTPLACE as ep
LEFT OUTER JOIN EVENTMODULE as em ON em.EVENTMODULENO=ep.EVENTMODULENO
LEFT OUTER JOIN ADDRESS as ad ON ad.CONTACTNO=ep.CONTACTNO
WHERE em.EVENTMODULENO = '1111111-2222222-3333333-4444444'
GROUP BY ep.EVENTPLACENO, ad.POSTCODE
add ROW_NUMBER()OVER(PARTION BY ep.EVENTPLACENO,ad.POSTCODE ORDER BY DATEDIFF(dd,ep.CREATIONDATE,ad.CREATIO NDATE))作为rown,然后查询查询作为派生查询,选择rown = 1 – Cato