2010-08-05 89 views
0

我有以下查詢:TSQL按周選擇最後一個值?

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 autonumbered)。該查詢的工作原理,但我想要做的是選擇一個給定的日曆周而不是給定的一天輸入的最後一個值。

例如,這裏就是當前的查詢返回:

 
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

什麼是您的日曆周?每週開始是區域性的 - 有些是星期天,有些則是星期一... – 2010-08-05 16:23:39

+0

對不起,我應該指定 - 週日。 – Ethan 2010-08-05 16:37:32

回答

1

我想起了周,如果你有

替換原來的GROUP BY子句
GROUP BY (DATEPART(WEEK,date_added)) 

你應該得到你想要的。

+0

完美,謝謝! – Ethan 2010-08-05 18:08:45

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 

只是將此主題融入你的子查詢