我有下表
我想为每个月的第一天选择[UsedSpace(MB)]
的值。
例如1/5/2015
[UsedSpace(MB)]
的值应为10
。
我尝试了以下查询,但没有成功。
Select Cast(DATEADD(mm,DATEDIFF(mm,0,ExecuteTime),0) AS DATE) AS [Monthly],
[UsedSpace(MB)]
from tbl_Test
group by DATEADD(mm,DATEDIFF(mm,0,ExecuteTime),0), [UsedSpace(MB)]
Order by DATEADD(mm,DATEDIFF(mm,0,ExecuteTime),0)
请提出任何建议。
答案 0 :(得分:3)
如果您知道每个日期总是有一条记录,那么您可以在WHERE语句中限制结果。如果同一日期可能有多个记录或者某个日期没有记录,那么您应该使用MIN函数。
SELECT
CAST(ExecuteTime as Date) AS Date,
UsedSpace
FROM tbl_Test
WHERE Day(ExecuteTime) = 1
答案 1 :(得分:1)
对于提供的示例数据,您只需为该月的第一天创建where子句即可。如果您需要更通用的解决方案,则需要获得每个月的最低日期,然后将其与原始表一起使用。
WITH cte AS
(
SELECT MIN(ExecuteTime) AS Monthly
FROM tbl_Test
GROUP BY DATEADD(m, DATEDIFF(m, 0, ExecuteTime), 0)
)
SELECT t.ExecuteTime, t.[UsedSpace(MB)]
FROM tbl_Test AS t
JOIN cte AS m
ON t.ExecuteTime = m.Monthly
ORDER BY t.ExecuteTime