如何从此表中检索DISTINCT值?

Cat*_*ler 4 sql t-sql sql-server sql-server-2008

这是我的表值.(7条记录)

SELECT * FROM tbl1
Run Code Online (Sandbox Code Playgroud)

因为我的代表很低,我无法发布图片.所以我在这里链接 http://i.stack.imgur.com/CFl0u.png

我写了一个查询以避免最后一条记录,但我仍然得到最后一条记录.(我需要的只是不同的电子邮件)

SELECT DISTINCT CandEmail,CandName,EmployerId,ContNum,IsDeleted,CandPortalId FROM tbl1
WHERE EmployerId = 7 AND IsDeleted = 0
Run Code Online (Sandbox Code Playgroud)

上述查询仍然检索具有上一个重复电子邮件记录的相同7条记录.

Tim*_*ter 5

你可以使用ROW_NUMBERwith OVER子句:

WITH CTE AS
(
  SELECT CandEmail,CandName,EmployerId,ContNum,IsDeleted,CandPortalId
        , RN = ROW_NUMBER() OVER (PARTITION BY CandEmail ORDER BY ContNum DESC)
  FROM tbl1
  WHERE IsDeleted = 0
)
SELECT CandEmail,CandName,EmployerId,ContNum,IsDeleted,CandPortalId
FROM CTE WHERE RN = 1
Run Code Online (Sandbox Code Playgroud)

OVER子句(Transact-SQL)

在应用关联的窗口函数之前,确定行集的分区和排序.也就是说,OVER子句定义查询结果集中的窗口或用户指定的行集.然后,窗口函数计算窗口中每行的值.