0
所以基本上我想要做的是爲我們的商店生成報告。我們有一個事件報告網站,員工可以在其中報告任何商店發生的事件。因此,在我想要生成的一般報告中,我想展示我們每個商店的詳細信息(五家商店)。這將包括商店名稱,事件數量,最早的事件日期,最新的事件日期以及每個商店最常見的事件類型。根據同一行中另一列的值選擇列中最頻繁的值?
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]值是相同的。基本上,它爲整個表獲取最常見的事件值,而不管它來自哪個存儲區,然後顯示每個存儲區的值,即使不同的存儲區具有不同的列值。
我一直在試圖解決現在這一段時間,但一直沒能:-(
這就像一個魅力! – 2014-09-29 16:23:19
我不太明白爲什麼我們將WHERE id2.StoreID = s.StoreID子句添加到子查詢中,因爲我反正選擇了每個商店的結果 – 2014-09-29 16:24:24
@DavidFlynn。 。 。查找「相關子查詢」。您可以將子查詢視爲針對每個商店運行一次,並且where子句是引擎知道如何執行該操作的條款。 – 2014-09-29 19:38:47