2014-10-01 65 views
0

我有正确打印以下:如何从GROUP BY中选择?

MonthNumber 
Users 
UserHits 

我也需要从dbo.ReportAudienceOverviews

如何更改SQL印刷从Coefficient列?

SELECT DATEPART(mm, S.DateProcessStatus) as MonthNumber, 
    --S.DeviceId, 
    SUM(A.Users) as Users, 
    SUM(A.UsersHits) as UserHits 
    FROM dbo.ReportAudienceOverviews A 
    LEFT JOIN dbo.ReportProcessStatuses S 
    ON S.StatusId = A.StatusId 
    AND S.DateProcessStatus >= '2014' AND S.DateProcessStatus < '2015' 
    --WHERE S.DeviceId = 1 AND A.Coefficient = 20 
    GROUP BY 
    DATEPART(mm, S.DateProcessStatus), S.DeviceId 
    ORDER BY MonthNumber ASC, S.DeviceId ASC 
+5

有可能,一般情况下是Coefficient'的'*多*值,它集合了行从这个查询中形成单个输出行 - 那么应该如何选择特定的“系数”值?或者他们应该是加在一起? – 2014-10-01 08:27:43

+1

您有几个选项,例如'Coefficient = MIN(A.Coefficient)'或'..MAX(Coefficient)'或'SUM(Coefficient)'或'AVG(Coefficient)'。如果你想要一个特定行的“系数”,你必须解释你的逻辑。 – 2014-10-01 08:29:15

+0

我对MIN(A.Coefficient) – GibboK 2014-10-01 08:30:05

回答

2

你只需要包括与MIN(Coefficient)列(如在评论中提及):

SELECT DATEPART(mm, S.DateProcessStatus) as MonthNumber, 
--S.DeviceId, 
SUM(A.Users) as Users, 
SUM(A.UsersHits) as UserHits, 
MIN(A.Coefficient) as Coefficient 
FROM dbo.ReportAudienceOverviews A 
LEFT JOIN dbo.ReportProcessStatuses S 
ON S.StatusId = A.StatusId 
AND S.DateProcessStatus >= '2014' AND S.DateProcessStatus < '2015' 
--WHERE S.DeviceId = 1 AND A.Coefficient = 20 
GROUP BY 
DATEPART(mm, S.DateProcessStatus), S.DeviceId 
ORDER BY MonthNumber ASC, S.DeviceId ASC