У меня есть стол с динамиком, сессия, конференция, электронная почта. моя цель - сделать запрос, который объединяет конференцию и сеанс в одно поле, чтобы мы могли применить к нему HTML-код и отформатировать его при предварительном просмотре в другом месте.
Проблема здесь в том, что докладчик посещает две конференции разностей и представляет разные сессии. Этот запрос как-то дублирует сессии с одной конференции и подает его на вторую конференцию:
sql group by дублирует значения?
SELECT speaker AS 'speakername', email AS 'email',
CAST(
(SELECT conference AS 'strong',
(SELECT session AS 'session' from speakersessions AS ds
WHERE ds.speaker = dd.speaker
GROUP BY session
for xml path(''), type) AS 'sessions'
FROM speakersessions AS ds
WHERE ds.speaker = dd.speaker
GROUP BY conference
for xml path(''), type)
AS NVARCHAR(MAX))
AS 'conferences'
FROM speakersessions AS dd
GROUP BY speaker, email
результатов, которые показывают для диктора 'Грега является:
<strong>Business Planning </strong>
<sessions><session>
10 tips to fast-track
</session><session>
Hybrid planning
</session><session>
Planning on the cloud
</session><session>
The Boardroom
</session></sessions>
<strong>Reporting Analytics</strong>
<sessions><session>
10 tips to fast-track
</session><session>
Hybrid planning
</session><session>
Planning on the cloud
</session><session>
The Boardroom
</session></sessions> <br/>
(я добавил разрывы строк) , но как вы можете видеть, это не то, что таблица speakersessions показывает:
Conference Session Business Planning | 10 tips to fast-track Business Planning | Hybrid planning Reporting Analytics | Planning on the cloud Reporting Analytics | The Boardroom
около того сессий для reporti ng аналитики не заполняются. Что тут происходит?
Похоже, ваш присоединиться к 'WHERE ds.speaker = dd.speaker' недостаточно тогда. Возможно, также присоединиться к конференции в этом коррелированном подзапросе? – JNevill
@JNevill Я пробовал это, но он дает мне ошибку «Column» speakersessions.Conference 'недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. " Я попытался поместить его в оба предложения WHERE: 'WHERE ds.saker = dd.speaker и ds.conference = dd.conference' – z0nia
Вам просто нужно это во внутреннем WHERE. Добавьте «конференцию» в группу GROUP BY соответствующего коррелированного подзапроса. – JNevill