我有两张这样的table:
客户端表(让我们将其命名为ClientTable)
联系人ID | 姓名 | 电子邮件 |
---|---|---|
001 | 约翰 | johnemail01@gmail.com |
002 | 玛丽亚 | mariaemail02@gmail.com |
003 | 卡洛斯 | carlosemail03@gmail.com |
004 | 帕特丽夏 | patriciaemail04@gmail.com |
Travels Table(让我们将其命名为TravelTable)
ContactID | TripDate | 国家/地区 |
---|---|---|
001 | 2022-10-18 | 德国 |
003 | 2022-02-05 | 加拿大 |
001 | 2022-03-07 | 欧洲 |
002 | 2022-07-02 | 印度 |
004 | 2022-01-28 | 奥地利 |
003 | 2022-01-28 | 墨西哥 |
我需要的是赶上约翰最近的一次旅行(去德国),不管他去过哪个国家。我的SQL是这样写的:
SELECT DISTINCT a.ContactID, a.Name, a.Email, MAX(b.TripDate) AS 'LastTrip', b.Country
FROM ClientTable a WITH (NOLOCK)
LEFT JOIN TravelTable b ON a.ContactID = b.ContactID
WHERE a.ContactID IS NOT NULL AND a.Email IS NOT NULL
GROUP BY a.ContactID, a.Name, a.Email, b.Country
问题是我得到了这个输出:
| ContactID | Name | Email | LastTrip | Country |
| --------- | ---- | --------------------- | ---------- | ------- |
| 001 | John | johnemail01@gmail.com | 2022-10-18 | Germany |
| 001 | John | johnemail01@gmail.com | 2022-03-07 | EUA |
我真的很难接受这一次,我不明白我为什么不去做,只是为了得到约翰的最后一次旅行。
提前谢谢。
1条答案
按热度按时间nszi6y051#
您可以使用子查询获取
MAX
日期:结果:
小提琴。