У меня есть tblMachineReports со столбцами: Status (varchar), LogDate (datetime), Category (varchar) и MachineID (int).Выберите последнюю запись для каждой категории, связанной с объектами
Я хочу получить последнее обновление статуса из каждой категории для каждой машины, чтобы фактически получить моментальный снимок последних статусов всех машин, уникальных для их MachineID.
Данные таблицы будет выглядеть
Категория - Статус - MachineID - LogDate
Ката - STATUS1 - 001 - date1
Ката - СОСТОЯНИЕ 2 - 002 - date2
catb - СОСТОЯНИЕ 3 - 001 - date2
CATC - СОСТОЯНИЕ 2 - 002 - date Ката - СОСТОЯНИЕ 3 - 001 - date5
CATC - STATUS1 - 001 - date6
catb - СОСТОЯНИЕ 2 - 001 - date7
Ката - СОСТОЯНИЕ 2 - 002 - date8
catb - СОСТОЯНИЕ 2 - 002 - date9
CATC - СОСТОЯНИЕ 2 - 001 - date10
пересчитано, у меня есть несколько машин, освещающих нескольких статусов в этом tblMachineReports. Все строки создаются с помощью вставок, поэтому их, очевидно, будут дублировать записи для машин по мере поступления новых статусов. Ни один из столбцов не может быть предсказан, поэтому я не могу выполнять какие-либо сравнения «некоторые жестко закодированные строки» в любой части оператор select.
Для таблицы образца I при условии, что желаемые результаты будут выглядеть следующим образом:
Категория - Статус - MachineID - LogDate
CATC - СОСТОЯНИЕ 2 - 002 - date Ката - СОСТОЯНИЕ 3 - 001 - date5
catb - СОСТОЯНИЕ 2 - 001 - date7
Ката - СОСТОЯНИЕ 2 - 002 - date8
catb - СОСТОЯНИЕ 2 - 002 - date9
CATC - СОСТОЯНИЕ 2 - 001 - date10
Что будет делать оператор select для достижения этого, получив последний статус для каждой категории на каждом компьютере, используя MS SQL Server 2008? Я пробовал разные комбинации подзапросов в сочетании с агрегатными MAX (LogDates), а также объединениями, групповыми байтами, отличиями, а что нет, но еще не нашел рабочего решения.
Спасибо за помощь всем людям, это сообщество абсолютно феноменально в своей базе знаний и времени отклика. – Simpleton
Я добавил тег наибольшего числа на группу, потому что эквивалентный вопрос был задан десятками раз на SO. Но мне пришлось удалить один из тэгов из-за ограничения на 5 тегов. –
Спасибо за ваш ответ Простой, мой ответ действительно больше не совместим с существующими стандартами базы данных. Я изменил свой ответ с вашего комментария – TerrorAustralis