немного сложный вопрос SQL (мы запускаем SQL Server 2008 R2).Группировать по, подсчитывать и удалять по последовательным записям
Из таблицы журналов Мне нужно объединить последовательные записи, содержащие одни и те же сообщения, для подсчета количества сообщений и удаления комбинированных сообщений.
Чтобы сделать это более понятным и видимым, вот небольшой пример данных
ID DATE MSG COUNT
1 2013-08-17 mail NULL
2 2013-08-17 mail NULL
3 2013-08-17 www NULL
4 2013-08-18 www NULL
5 2013-08-18 www NULL
6 2013-08-18 www NULL
7 2013-08-18 mail NULL
8 2013-08-18 www NULL
9 2013-08-19 mail NULL
10 2013-08-19 mail NULL
11 2013-08-20 mail NULL
12 2013-08-20 mail NULL
13 2013-08-21 www NULL
14 2013-08-22 mail NULL
15 2013-08-22 mail NULL
16 2013-08-23 mail NULL
17 2013-08-23 mail NULL
18 2013-08-23 mail NULL
Результат должен выглядеть следующим образом
ID DATE MSG COUNT
1 2013-08-17 mail NULL
2 2013-08-17 mail NULL
3 2013-08-17 www NULL
6 2013-08-18 www 3
7 2013-08-18 mail 1
8 2013-08-18 www 1
12 2013-08-20 mail 4
13 2013-08-21 www 1
15 2013-08-22 mail 2
16 2013-08-23 mail NULL
17 2013-08-23 mail NULL
18 2013-08-23 mail NULL
Итак, в основном запрос должен
- обрабатывать данные только в пределах заданного диапазона дат (в этом примере с 2013-08-18 по 2013-08-22)
- объединить последовательные строки на основе текста поля MSG
- рассчитывать объединенные данные и установите значение в поле Count
- удалить объединенные записи (в данном примере, например, ID 6 остается, но ID 5 и ИД 4 должны быть удалены)
Я не являюсь экспертом в SQL я был бы очень признателен за любую помощь, предложения или SQL запросов
заранее спасибо ...
Можете ли вы создать SQLFiddle? Нам было бы намного легче помочь вам. – Minoru
Вы ищете последовательные записи или записи в одну и ту же дату, поскольку в запросе выше кажется, что записи (столбец MSG) сгруппированы по дате. –
Я ищу последовательные записи с тем же MSG (Message), а не Date. Извините за путаницу – padre