我有以下查询,但没有给出预期的结果。
SELECT
FIRST_NAME + ' ' + LAST_NAME , ORDER_CODE
FROM
CUSTOMER
HAVING
COUNT(ORDER_CODE) > 1
我想看到所有组合的第一个和最后一个名字,它们有2个或更多个唯一的order_codes。我该如何查询?
答案 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_NAME
和LAST_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