Так что в основном то, что я пытаюсь сделать, это генерировать отчет для наших магазинов. У нас есть веб-сайт отчета об инциденте, на котором сотрудники могут сообщать об инциденте, который происходит в любом из наших магазинов. Поэтому в общем отчете, который я пытаюсь создать, я хочу показать детали каждого магазина, который у нас есть (пять магазинов). Это будет включать название магазина, количество инцидентов, самую раннюю дату инцидента, дату последнего инцидента, а затем самый повторяющийся тип инцидента в каждом магазине.Выбор наиболее частого значения в столбце на основе значения другого столбца в той же строке?
SELECT Store.Name AS [Store Name], COUNT(*) AS [No. Of Incidents], Min(CAST(DateNotified AS date)) AS [Oldest Incident], Max(CAST(DateNotified AS date)) AS [Latest Incident],
( SELECT TOP 1 IncidentType.Details
FROM IncidentDetails
INNER JOIN Store ON IncidentDetails.StoreID = Store.StoreID
INNER JOIN IncidentType On IncidentDetails.IncidentTypeID = IncidentType.IncidentTypeID
Group By IncidentType.Details, IncidentDetails.StoreID
Order By COUNT(IncidentType.Details) DESC) AS [Most Freqeuent Incident]
FROM IncidentDetails
INNER JOIN Store ON IncidentDetails.StoreID = Store.StoreID
INNER JOIN IncidentType On IncidentDetails.IncidentTypeID = IncidentType.IncidentTypeID
GROUP BY Store.Name
Просто чтобы было ясно, что IncidentDetails таблица хранит все подробности об инциденте в том числе, которые хранят это происходило на то, что тип инцидента был, времени/даты и т.д. Что это делает, хотя это дает мне 5 строк для каждого хранилища, но значение [Most Frequent Incident] одинаково для каждой строки. В основном, он получает наиболее частое значение инцидента для всей таблицы, независимо от того, в каком хранилище он появился, и затем отображает это для каждого хранилища, даже если разные магазины имеют разные значения для столбца.
Я пытался решить эту проблему на некоторое время теперь, но не смогли :-(
Это работало как очарование! –
Я не совсем понимаю, почему мы добавляем предложение WHERE id2.StoreID = s.StoreID в подзапрос, так как результат я каждый раз выбрал каждый магазин –
@DavidFlynn. , , Посмотрите «коррелированный подзапрос». Вы можете думать о том, что подзапрос работает как один раз для каждого хранилища, а предложение 'where' - то, как движок знает, как это сделать. –