tbl_totalMonth
有id
,time
,date
和kwh
列。
我想获取月份的最后记录数据并将其按月分组,因此结果将是月份的名称和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)
答案 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