代码之家  ›  专栏  ›  技术社区  ›  Eyeball

TSQL是否按周选择最后一个值?

  •  0
  • Eyeball  · 技术社区  · 14 年前

    我有以下疑问:

    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 
    

    日历周 而不是某一天。

    例如,以下是当前查询返回的内容:

    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 
    

    有什么想法吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Jamie LaMorgese    14 年前

    我想如果你用

    GROUP BY (DATEPART(WEEK,date_added))
    

        2
  •  0
  •   SQLMenace    14 年前

    这将为你提供一周中的第一天和最后一天

    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