2017-01-30 38 views
1

我有以下查询,但它没有给出预期的结果。选择所有具有多于1个代码的名称

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

我想查看所有具有2个或更多唯一order_codes的合并first +姓氏。我如何查询这个?

+2

哪个DBMS您使用的? (答案可能是产品特定的。) – jarlh

+0

您是否需要返回order_codes,或只需要名称? – jarlh

+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

+0

这一个工作!谢谢 –

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 
相关问题