0
如何向運行總計的列添加以下已在日曆表上進行了左連接的查詢?優選地,該溶液應該具有良好的性能目標是SQL Server 2012.如何將SQL Server 2012中的日曆表中的左連接查詢添加到查詢中?
SELECT
calendar.year, calendar.month,
COUNT(users.ID) AS total_users
FROM
core_Calendar AS calendar
LEFT JOIN
users_Users AS users ON CONVERT(DATE, calendar.date) = CONVERT(DATE, users.CreatedAt)
WHERE
calendar.year >= 2012
AND calendar.year <= Year({ts '2016-01-06 19:23:27'})
GROUP BY
calendar.year, calendar.month
ORDER BY
calendar.year, calendar.month
基本上,您將需要使用ROW_NUMBER()分區功能。由於MONTH(calendar.date)在SELECT中不存在,因此查詢有問題,它應該拋出錯誤。在性能方面,當你將函數插入filter子句時,它們不是SARGABLE,這意味着它的執行計劃會很差,並且會導致輸出緩慢。 – VKarthik
我刪除了MONTH(calendar.date)。這是多餘的,但沒有錯誤拋出。 – Thorsten