获取有关日期的最新数据并按月分组

时间:2017-11-21 07:06:13

标签: sql sql-server

tbl_totalMonthidtimedatekwh列。

我想获取月份的最后记录数据并将其按月分组,因此结果将是月份的名称和kwh。

结果应该是这样的:

month    | kwh
------------
January  | 150
February | 400

我试过的查询:(但它返回的最大kwh不是最后记录的kwh)

SELECT DATENAME(MONTH, a.date) as monthly, max(a.kwh) as kwh
                        from tbl_totalMonth a
                        WHERE date > = DATEADD(yy,DATEDIFF(yy,0, GETDATE() -1 ),0)
                        group by DATENAME(MONTH, a.date)

2 个答案:

答案 0 :(得分:1)

我怀疑你需要一些完全不同的东西:

select *
from (
      select *
          , row_number() over(partition by month(a.date), year(a.date) order by a.date DESC) as rn
      from tbl_totalMonth a
      WHERE date > = DATEADD(yy,DATEDIFF(yy,0, GETDATE() -1 ),0)
     ) d
where rn = 1

要获取“记录的最后一个kwh(每月)”,您需要使用row_number() - 每月 - 将对行(降序)进行排序并为每个行添加一个行号。当该数字为1时,您拥有该月的“最新”行,并且您根本不需要group by

答案 1 :(得分:0)

你可以使用group by和month

select datename(month, date), sum(kwh)
from tbl_totalMonth 
where date =  (select max(date) from tbl_totalMonth )
group by datename(month, date)

如果您只需要每个月的最后一行,那么您应该使用

select datename(month, date), khw
from tbl_totalMonth a
inner join (
select max(date) as max_date  
from tbl_totalMonth 
group by month(date)) t on t.max_date = a.date