次のコードのSELECTステートメントに集計サブクエリを追加しようとしています。条件照会親クエリのSQL Server集計サブクエリエラー
DECLARE @Date1 Date
DECLARE @Date2 Date
SET @Date1 = '2017-01-01'
SET @Date2 = '2017-03-01'
SELECT
p.PracticeName [Practice Name],
dbo.getFormattedName(l.Userid) [User Name],
MAX(EventDate) [Last Activity],
COUNT(*) [Activity Count],
(SELECT COUNT(*)
FROM UserEvent EVT (NOLOCK)
WHERE EVT.EventTypeID = 1
AND EVT.UserID = au.userID
AND EVT.EventDate >= @Date1
AND EVT.EventDate <= DATEADD(DAY, 1, @Date2)
GROUP BY
au.userID) [Login Count]
FROM
dbo.AudLog l (NOLOCK)
JOIN
Appuser au (NOLOCK) ON l.UserID = au.UserID
JOIN
Practice p (NOLOCK) ON au.PracticeID = p.PracticeID
WHERE
l.EnvironmentID = 1
AND EventDate >= @Date1
AND EventDate <= DATEADD(DAY,1,@Date2)
GROUP BY
p.PracticeName,
dbo.getFormattedName(l.Userid)
ORDER BY
p.PracticeName,
dbo.getFormattedName(l.Userid)
私は次のエラーを取得しています:
Column 'Appuser.UserID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
私は同じように使用しています、AppUser.UserID
を選択していないよので、そのエラーが私のサブクエリに適用される理由を私は理解していませんサブクエリを親クエリと整列させるための条件の参照。また、実際にはサブクエリ内のGROUP BY
ステートメントにあります。
私はthis questionを参照しましたが、説明に基づいて私のクエリは機能していると思います。
助けてください。
わずかなトピックから逸脱しているが、あなたが本当に読む必要がある記事...のhttp://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ –