【发布时间】:2017-11-22 08:41:31
【问题描述】:
我试图只返回唯一的“参考”,但还需要撤回可能也是唯一的“姓氏”和“电子邮件”。在我的示例中,您可以将多个客户关联到一个参考。目前,我的查询拉回了与“参考”关联的所有客户。由于我只需要其中一位客户的详细信息,因此我只想使用“姓氏”和“电子邮件”撤回“参考”一次。
以下查询是一个示例,但它与我想要实现的场景有关。
在示例中,“UniqueID”本质上是项目添加到表中的顺序。我需要这个,所以我可以按最近的记录进行过滤。由于“参考”不是基于增量的,我不能使用它。
所以,本质上我想计算有多少重复的“参考”实例,但只返回一个“参考”实例加上相应的“电子邮件”和“姓氏”,然后按添加的最新记录排序。
每张桌子的味道:
CustomerPackage: UniqueID (INT); Reference (STRING)
Customer: FirstName (STRING); Surname (STRING); Email (STRING); Address (STRING)
PurchaseDetails: PurchaseDate (DATE); PurchaseDescription (STRING); PurchaseType (INT)
SQL 脚本示例:
USE Example
GO
SELECT TOP 10
CP.Reference,
C.Surname,
C.Email
FROM CustomerPackage CP
INNER JOIN Customer C ON CP.UniqueID = C.UniqueID
INNER JOIN PurchaseDetails PD ON CP.UniqueID = PD.UniqueID
WHERE PD.PurchaseDate > dateadd(HOUR,10,getutcdate()) and PD.PurchaseDate < dateadd(DAY,29,getutcdate()) and PD.PurchaseType = 1
ORDER BY CP.UniqueID DESC
输出:
Reference Surname Email
1XX45 Smith e.e@e.com
1XX45 Jones f.f@f.com
1XX45 Betty g.g@g.com
4B678 Reeds h.h@h.com
=========================
需要的输出:
Reference Surname Email
1XX45 Smith e.e@e.com
4B678 Reeds h.h@h.com
【问题讨论】:
-
为什么选择电子邮件
e.e@e.com而不是其他两个的逻辑是什么? -
没有逻辑,只是可以选择任何重复的引用。只要只返回一个引用
-
那么您有以下两个有效的答案可供选择。
标签: sql sql-server count distinct