Получите результаты с более чем 1 различным значением - PullRequest
0 голосов
/ 23 сентября 2019

У меня такой запрос:

SELECT [DesignGroupId], [dgc].[CustomerKey]
FROM [DesignGroupCustomer] AS [DGC]
INNER JOIN [Customer] AS [C] ON [DGC].[CustomerKey] = [C].[CustomerKey]
WHERE [C].[CustTypeKey] = 7
GROUP BY [DesignGroupId], [DGC].[CustomerKey]
ORDER BY [DesignGroupId]

Возвращает значения в виде:

+--------------------------------------+------+
| A0E6E679-1CE3-4804-AF90-00022296CFA1 | 4644 |
| 0FFCFC8F-51EF-43FB-B2AE-000603ECC1EA | 4644 |
| 6CDC64F7-722C-4BA6-AE4E-0010F1C95F58 |  283 |
| 6CDC64F7-722C-4BA6-AE4E-0010F1C95F58 | 3832 |
+--------------------------------------+------+

Я хочу узнать, какие значения у DesignGroups разные CustomerKeyпоэтому я хочу получить только одну строку

6CDC64F7-722C-4BA6-AE4E-0010F1C95F58 

, потому что у этого идентификатора более 1 разных CustomerKey

Я пытаюсь использовать HAVING COUNT, например:

SELECT [DesignGroupId], [dgc].[CustomerKey]
FROM [DesignGroupCustomer] AS [DGC]
INNER JOIN [Customer] AS [C] ON [DGC].[CustomerKey] = [C].[CustomerKey]
WHERE [C].[CustTypeKey] = 7
GROUP BY [DesignGroupId], [DGC].[CustomerKey]
ORDER BY [DesignGroupId]
HAVING COUNT(DGC.CustomerKey) > 1

Но это не работает, оно возвращает другие значения, которые мне не нужны.Как мне этого добиться?Привет

1 Ответ

0 голосов
/ 23 сентября 2019

Просто удалите ключ клиента из неагрегированных столбцов:

SELECT [DesignGroupId]
FROM [DesignGroupCustomer] AS [DGC]
INNER JOIN [Customer] AS [C] ON [DGC].[CustomerKey] = [C].[CustomerKey]
WHERE [C].[CustTypeKey] = 7
GROUP BY [DesignGroupId]
HAVING COUNT(DISTINCT [DGC].[CustomerKey]) > 1

Я использую DISTNCT в подсчете, потому что неясно, могут ли ваши образцы данных содержать дубликаты на DesignGroupId / CustomerKey.Если это не так, вы можете удалить DISTINCT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...