选择包含1个以上代码的所有名称

时间:2017-01-30 12:08:09

标签: sql count having

我有以下查询,但没有给出预期的结果。

SELECT 
    FIRST_NAME + ' ' + LAST_NAME , ORDER_CODE 
FROM 
    CUSTOMER
HAVING 
    COUNT(ORDER_CODE) > 1

我想看到所有组合的第一个和最后一个名字,它们有2个或更多个唯一的order_codes。我该如何查询?

2 个答案:

答案 0 :(得分:2)

我认为您需要count(distinct)以及group by

SELECT (FIRST_NAME + ' ' + LAST_NAME), ORDER_CODE 
FROM CUSTOMER
GROUP BY (FIRST_NAME + ' ' + LAST_NAME)
HAVING COUNT(DISTINCT ORDER_CODE) > 1;

这也假设FIRST_NAMELAST_NAME永远不会NULL

答案 1 :(得分:0)

在派生表中包装名称连接部分 - 以避免重复连接代码。

GROUP BY其结果并使用HAVING COUNT DISTINCT仅返回包含多个不同order_code的名称:

select full_name
from
(
    select FIRST_NAME + ' ' + LAST_NAME as full_name, ORDER_CODE
    FROM CUSTOMER
) dt
group by full_name
having count(distinct ORDER_CODE) > 1