ユーザーごとにセッションを保持する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
私は、月の数を保持する "月"と呼ばれるテーブルを持っています彼の月(月)と月の名前(MonthName)を入力して、このテーブルに対して左外部結合を実行しようとしました。また、大文字と小文字の選択も試みました。私はこの問題をStackoverflowで検索し、やや似たような問題を見てきましたが、日付を使用する問題はありません。今日考えて苦労しています...
'Months'テーブルから選択してみてください、その後、あなたの' SessionTable'に 'LEFT OUTER JOIN'を使用していましたか? –