Я признаю, что эта группа всегда вызывает у меня проблемы, и, возможно, это потому, что я не понимаю ее правильного использования, но, надеюсь, когда я увижу, как это делается с этим, я больше понимаю.TSQL Group по ошибке с оператором
Мое заявление:
SELECT DATENAME(month, A.[endTime]) as [month],
MONTH(A.[endTime]) as [monthValue],
(
SELECT count(employee) as attendees FROM Focus_Attendees WHERE meetingID = A.[id]
) as attendees,
(
SELECT count(id) as totalMeetings FROM Focus_Meetings WHERE id = A.[id]
) as totalMeetings
FROM Focus_Meetings as A
WHERE YEAR(endTime) = @year
GROUP BY DATENAME(month, A.[endTime]), MONTH(A.[endTime])
FOR XML PATH ('dataSet'), TYPE, ELEMENTS, ROOT ('root');
Column 'Focus_Meetings.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Я не хочу, чтобы сгруппировать данные по идентификатору, как я бы отдельные записи для каждого результата. В моей таблице собраны встречи, и я пытаюсь получить общее количество собраний в месяц, а затем и количество участников этих собраний.
Любые советы для достижения этой цели путем настройки заявления?
Update:
Я изменил его на этот запрос:
SELECT DATENAME(month, A.[endTime]) as [month],
MONTH(A.[endTime]) as [monthValue],
count(B.[employee]) as totalAttendees
FROM Focus_Meetings as A
JOIN focus_attendees as B
ON A.[id] = B.[meetingID]
WHERE YEAR(endTime) = @year
GROUP BY DATENAME(month, A.[endTime]), MONTH(A.[endTime])
FOR XML PATH ('dataSet'), TYPE, ELEMENTS, ROOT ('root');
Это возвращает мой XML:
`<root>
<dataSet>
<month>July</month>
<monthValue>7</monthValue>
<totalAttendees>1</totalAttendees>
</dataSet>
<dataSet>
<month>June</month>
<monthValue>6</monthValue>
<totalAttendees>13</totalAttendees>
</dataSet>
</root>`
Это правильно, но мне нужны общие встречи в этом месяце, который будет count(A.[id])
, но это дало бы мне ошибку
Соединяется с Focus_Attendees и totalMeetings вместо того, чтобы иметь их в предложении select – TMNT2014
Ли избавиться от предложения «для xml» все равно даст вам ту же ошибку? – reedstonefood
@ TMNT2014 Я обновил вопрос с результатами вашего ответа – SBB