#sql #tsql
#sql #tsql
Вопрос:
У меня есть этот запрос:
SELECT
MAX([D].[DesignKey]) AS [DesignKey]
FROM [Project] AS [P]
INNER JOIN [DesignGroup] AS [DG] ON [P].[ProjectKey] = [DG].[ProjectKey]
INNER JOIN [Design] AS [D] ON [DG].[DesignGroupId] = [D].[DesignGroupId]
GROUP BY
[P].[ProjectKey]
, [D].[Name]
ORDER BY DesignKey
Мое отношение таково: у одного проекта может быть несколько DesignGroups
, а у одного Design
может быть несколько DesignGroups
, но у одного проекта НЕ МОЖЕТ быть нескольких проектов
Что я хочу сделать, это выбрать максимальный номер ключа дизайна для каждого DesignGroup
как я могу этого добиться? С моим запросом он возвращает все DesignKeys, ему все равно, является ли он последним в каждой designGroup. С уважением
Ответ №1:
Это должно делать то, что вы хотите:
SELECT [DG].[DesignGroupId], MAX([D].[DesignKey]) AS [DesignKey]
FROM [DesignGroup] [DG] JOIN
[Design] [D]
ON [DG].[DesignGroupId] = [D].[DesignGroupId]
GROUP BY [DG].[DesignGroupId];
Обратите внимание, что PROJECT
таблица не нужна для ответа на ваш вопрос.
Ответ №2:
используйте DesignGroupId для группирования и выбора
SELECT
DesignGroupId, MAX([D].[DesignKey]) AS [DesignKey]
FROM [Project] AS [P]
INNER JOIN [DesignGroup] AS [DG] ON [P].[ProjectKey] = [DG].[ProjectKey]
INNER JOIN [Design] AS [D] ON [DG].[DesignGroupId] = [D].[DesignGroupId]
GROUP BY
DesignGroupId
ORDER BY DesignKey