首页 > 解决方案 > 在 SQL Server 2012 中查找多个结果(不重复)

问题描述

我需要帮助。我有一份他们使用过的客户和服务的列表,但我需要将该列表缩小到使用过一项以上服务的客户(不包括只使用过一项服务的客户)。他们有时不止一次使用相同的服务,但我需要一份独特服务的列表。

下面带回了主要的客户列表。

SELECT
DISTINCT M.CustID
,S.ServiceID
,R.ReceivedDate
,S.ServiceRequestID

FROM Customers AS M

LEFT OUTER JOIN CustomerDates AS R ON M.CustID = R.CustID

LEFT OUTER JOIN Service1 AS S ON R.ServiceRequestID = S.ServiceRequestID

WHERE S.CloseDate IS NULL

这就是结果的样子

我需要的是一个排除前三行的列表,因为他们只使用了一项服务,而接下来的七行我需要,因为他们使用了不止一项服务。

标签: sqlsql-server

解决方案


尝试以下,它应该工作

SELECT
    CustID
    ,ServiceID
    ,ReceivedDate
    ,ServiceRequestID
FROM
(SELECT
    DISTINCT M.CustID
    ,S.ServiceID
    ,R.ReceivedDate
    ,S.ServiceRequestID
    ,count(*) over (partition by M.CustID) as total

FROM Customers AS M

LEFT OUTER JOIN CustomerDates AS R ON M.CustID = R.CustID

LEFT OUTER JOIN Service1 AS S ON R.ServiceRequestID = S.ServiceRequestID

WHERE S.CloseDate IS NULL
) vals
where total > 1

推荐阅读