だから私はこのコードを持って、それが動作しません:なぜ私の集計グループはありませんか?
SET DATEFIRST 1
SELECT
WeekNumber-1 AS [WeekNumber],
EmplName,
ROUND(SUM(ManHrs), 2) AS [ManHrs],
ROUND((SUM(ManHrs) OVER(PARTITION BY EmplName)/((CONVERT(FLOAT, GETDATE())-
CONVERT(FLOAT, DATEADD(dd,
((DATEDIFF(dd,'17530101',GETDATE())/7)*7)-29,'17530101')))/7)), 2) AS [Avg
Weekly Man Hrs]
FROM
(
SELECT
DATEPART(wk, TicketDate) AS WeekNumber,
e.EmplName,
t.WorkCntr,
t.ManHrs
FROM TimeTicketDet t JOIN EmplCode e ON t.EmplCode = e.Emplcode
WHERE CONVERT(DATE, TicketDate) > DATEADD(dd,
((DATEDIFF(dd,'17530101',GETDATE())/7)*7)-29,'17530101')
) AS [Subquery]
GROUP BY WeekNumber, EmplName
ORDER BY 2, 1
エラーは、それが集計関数またはGROUPのいずれかに含まれていないため、「列 『Subquery.ManHrs』は、選択リストに無効であると言いますBY節 "
したがって、ManHrsをGROUP BY句に追加すると、コードは実行されますが、何もグループ化されません。それが読みやすいです場合、私は間違って
をやっているかわからここでは、GROUP BY句にManHrsを追加することによって実行されるコードのスクリーンショットですません:
EDIT:わかりましたので、は、 GROUP BY
が動作していないあなたの
グループに集計を追加 –
これを行うと、スクリーンショットのようにすべてのレコードが取得されます。各従業員は週数28〜32の5つのレコードしか持たないようにしてください。 –
いいえ、私は文字通り列の代わりに集計式をグループに追加しています。結果が得られない場合は、おそらくサブクエリをグループ化しますか?また、WHERE節のCONVERTおよびDATEDIFFを使用してパフォーマンスを強制終了している可能性があります。それを避けることができれば、私はそれをお勧めします。 –