我有一个SQL Server 2012表,每个用户持有会话,我需要找出活动的每月总分钟数,如果没有月结果,则显示“0 ”。如下表:显示不存在数据时的月份值SQL Server
User SessionStart SessionEnd
1 2014-03-01 08:00:00.000 2014-03-01 08:10:00.000
1 2014-03-15 09:00:00.000 2014-03-15 09:30:00.000
1 2014-05-01 04:00:00.000 2014-05-01 04:50:00.000
1 2014-06-01 02:00:00.000 2014-06-01 02:05:00.000
1 2014-07-01 09:00:00.000 2014-07-01 10:30:00.000
1 2014-09-01 01:00:00.000 2014-09-01 01:07:00.000
1 2014-12-05 08:00:00.000 2014-12-05 08:10:00.000
2 2014-01-01 01:01:00.000 2014-01-01 01:11:00.000
1 2015-03-01 08:00:00.000 2015-03-01 08:10:00.000
1 2015-05-01 04:00:00.000 2015-05-01 04:50:00.000
1 2015-06-01 02:00:00.000 2015-06-01 02:05:00.000
... ... ...
什么我结束了同是:
User Month Year Minutes
1 3 2014 40
1 5 2014 50
1 6 2014 5
1 7 2014 90
1 9 2014 7
1 12 2014 10
1 3 2015 10
1 5 2015 50
1 6 2015 5
我希望得到什么:
:User Month Year Minutes
1 1 2014 0
1 2 2014 0
1 3 2014 40
1 4 2014 0
1 5 2014 50
1 6 2014 5
1 7 2014 90
1 8 2014 0
1 9 2014 7
1 10 2014 0
1 11 2014 0
1 12 2014 10
1 1 2015 0
1 1 2015 0
1 3 2015 10
1 4 2015 0
1 5 2015 50
1 6 2015 5
我已经尝试使用
SELECT User
,MONTH(SessionStart)
,YEAR(SessionStart)
,SUM(DATEDIFF(minute, SessionStart, SessionEnd)) AS Minutes
FROM SessionTable
WHERE User = 1 AND YEAR(SessionStart) >= 2014
GROUP BY SessionStart, User
我有一个名为“Months”的表格,其中保存了t他月(Month)和月份名称(MonthName),并尝试在此表上执行左外连接,并尝试使用大小写选择。我在Stackoverflow上搜索了这个问题,看到了一些类似的问题,但没有涉及到使用日期。今天努力思考......
您是否尝试从'Months'表中选择,然后对'SessionTable'使用'LEFT OUTER JOIN'(一个表名,IMO - 当然是一个“表”)? –