这个问题与此有关,目前还没有解决方案:here
我有一张表格,可以显示某个区域的所有 session 。
此 session 有一个开始日期。
我需要按特定区域(在这种情况下)获取 session 开始日期的月份的所有天数
我有这个问题:
SELECT idArea, idSession, startDate FROM SessionsPerArea WHERE idArea = 1
idArea | idSession | startDate |
1 | 1 | 01-01-2013 |
1 | 2 | 04-01-2013 |
1 | 3 | 07-02-2013 |
我想要这样的东西:
date | Session |
01-01-2013 | 1 |
02-01-2013 | NULL |
03-01-2013 | NULL |
04-01-2013 | 1 |
........ | |
29-01-2013 | NULL |
30-01-2013 | NULL |
在这种情况下,表格会返回一月份的所有日期。
第二列是当天发生的 session 数,因为同一天可能有多个 session 。
谁能帮帮我?
最佳答案
请尝试:
DECLARE @SessionsPerArea TABLE (idArea INT, idSession INT, startDate DATEtime)
INSERT @SessionsPerArea VALUES (1,1,'2013-01-01')
INSERT @SessionsPerArea VALUES (1,2,'2013-01-04')
INSERT @SessionsPerArea VALUES (1,3,'2013-07-02')
DECLARE @RepMonth as datetime
SET @RepMonth = '01/01/2013';
WITH DayList (DayDate) AS
(
SELECT @RepMonth
UNION ALL
SELECT DATEADD(d, 1, DayDate)
FROM DayList
WHERE (DayDate < DATEADD(d, -1, DATEADD(m, 1, @RepMonth)))
)
SELECT *
FROM DayList t1 left join @SessionsPerArea t2 on t1.DayDate=startDate and t2.idArea = 1
关于sql - 查询返回一个月的所有天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15570627/