我有两个表:dbo.Projects
和dbo.Buffers
。 dbo.Projects
有很多dbo.buffers
。
我需要从dbo.Projects
中选择不同的列,从MAX(PercentConsumed)
中选择dbo.Buffers
行,但我似乎无法弄明白。似乎SQL Server 2008不允许我获得最大值。
这是我到目前为止所拥有的:
SELECT
P.ProjectName, P.ProjectManager, P.PlannedStart, MAX(B.PercentConsumed) AS 'PercentConsumed'
FROM dbo.Projects AS P
LEFT JOIN dbo.Buffers AS B ON P.ProjectID = B.ProjectID
GROUP BY P.ProjectName
HAVING P.ProjectType = 8 AND P.Category 23;
结果给了我同一个项目的多行,而我只想要B.PercentConsumed
的最大值
关于我做错的任何想法?
答案 0 :(得分:2)
您的查询应该给您一个错误。
您需要按所有非聚合列分组:
SELECT
P.ProjectName, P.ProjectManager, P.PlannedStart, MAX(B.PercentConsumed) AS 'PercentConsumed'
FROM dbo.Projects AS P
LEFT JOIN dbo.Buffers AS B ON P.ProjectID = B.ProjectID
WHERE P.ProjectType = 8 AND P.Category 23
GROUP BY P.ProjectName, P.ProjectManager, P.PlannedStart
;