我有這顯示作爲結果的查詢:MSSQL:如何顯示來自GROUP BY查詢的TOP 10項目?
Year-Month SN_NAME Raised Incidents
2015-11 A 14494
2015-11 B 8432
2015-11 D 5496
2015-11 G 4778
2015-11 H 4554
2015-11 C 4203
2015-11 X 3477
.......+ thousands more rows for 2015-11
2015-12 A 3373
2015-12 B 3322
2015-12 H 2814
2015-12 D 2745
......+ thousands more rows for 2015-12
......+ thousands more rows for 2016-01 - 2016-10
2016-11 B 2645
2016-11 C 2571
2016-11 E 2475
2016-11 D 2466
....+ thousands more rows for 2016-11
,我需要選擇TOP 10 SN_NAME通過Raised_Incident從上個月計數和再展示自己的計數之前的12個月。
我用它來顯示上述結果的查詢是這樣的一個:
DECLARE @startOfCurrentMonth DATETIME
SET @startOfCurrentMonth = DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0)
SELECT
CONVERT(char(7),IM.SN_SYS_CREATED_ON,121) as "Year-Month"
,CI.SN_NAME
,COUNT(IM.SN_NUMBER) as "Raised Incidents"
FROM [dbo].[tab_IM_Incident] IM
LEFT JOIN [dbo].[tab_SNOW_CMDB_CI] CI on IM.SN_CMDB_CI = CI.SN_SYS_ID
WHERE
IM.SN_SYS_CREATED_ON >= DATEADD(month, -13, @startOfCurrentMonth) AND IM.SN_SYS_CREATED_ON < @startOfCurrentMonth
AND (IM.SN_U_SUB_STATE <> 'Cancelled' OR IM.SN_U_SUB_STATE IS NULL)
GROUP BY
CONVERT(char(7),IM.SN_SYS_CREATED_ON,121)
, CI.SN_NAME
ORDER BY
CONVERT(char(7),IM.SN_SYS_CREATED_ON,121)
, COUNT(IM.SN_NUMBER) DESC
的問題是我不知道如何限制每個月值只有TOP10,因爲查詢返回我約200 000行總共應該返回13x10 = 130行。
預期的產出與問題一致,但在過去13個月中僅限於每月最多10行。
請指教。
將預期的輸出放在表格的表格中。比單詞更有效 – GurV
標記您正在使用的dbms。 (很多非ANSI SQL ......) – jarlh