sql - 查询返回一个月的所有天数

标签 sql sql-server

这个问题与此有关,目前还没有解决方案: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/

相关文章:

mysql - 从 2 个不同列中提取数据的单个下拉列表

mysql - 经典 ASP - 我可以丢失嵌套循环来换取连接吗?

sql - 在计算查询中的行数时,我应该使用 count(*) 还是 count(a, b, c.., z)?

c# - 从 WPF 保存到 SQL Server 数据库

sql-server - 当我在 SQL 2005 中删除聚集主键时会发生什么

sql - 在与 group by 的连接中从 ID 获取列

SQL - 不等左连接 BigQuery

sql - 在 microsoft sql server 2008 中运行查询之前如何知道有多少行将受到影响

SQL Server CTE 选择单树分支结构直至根

sql-server - 如何在我的 T-SQL 查询中编写这个 WHERE 过滤器来满足 2 个条件?