我有以下查询:
SELECT row_ID, value, date_added FROM dbo.Report WHERE salesman_ID = @salesman_ID AND row_ID IN ( SELECT MAX(row_ID) FROM dbo.Report WHERE salesman_ID = @salesman_ID GROUP BY ( date_added ) ) ORDER BY date_added ASC
这将选择给定用户每天输入的最后一个值(date_added列不包含时间值,行ID是自动编号的)。该查询有效,但我想要做的是选择为给定的日历周而不是给定日输入的最后一个值。
例如,这是当前查询返回的内容:
row_ID | value | date_added 1 | 25 | 7-5-2010 2 | 50 | 7-7-2010 5 | 40 | 7-15-2010 9 | 55 | 7-16-2010 11 | 60 | 7-27-2010
这是我希望它返回的内容:
value | week_of 50 | 7-4-2010 55 | 7-11-2010 60 | 7-22-2010
有什么想法吗?
答案 0 :(得分:1)
我认为如果用
替换原来的GROUP BY子句GROUP BY (DATEPART(WEEK,date_added))
你应该得到你想要的东西。
答案 1 :(得分:0)
这将为您提供一天中的第一天和最后一天
DECLARE @d DATETIME
SET @d = '20100805'
SELECT
@d - DATEDIFF(dd, @@DATEFIRST - 1, @d) % 7 AS FirstDayOfWeek,
@d - DATEDIFF(dd, @@DATEFIRST - 1, @d) % 7 + 6 AS LastDayOfWeek
将其合并到您的子查询中