当我只需要使用日期期间的最大值/最大值时,我试图了解如何进行求和。这有点像SQL Server:只选择具有 MAX(DATE) 的行,但不完全选择。谢谢阅读。
declare @tbl Table ( tableid int , eventdate date, valuec char(5) , valued int , recordedwhen datetime2(3) )
insert into @tbl values ( 0 , '2012-03-22' , '11111' , 3 , '2012-03-23 17:21:01.083' )
insert into @tbl values ( 1 , '2012-03-22' , '22222' , 3 , '2012-03-23 17:21:01.083' )
insert into @tbl values ( 2 , '2012-03-22' , '22222' , 4 , '2012-03-23 18:21:01.083' )
insert into @tbl values ( 3 , '2012-03-22' , '22222' , 5 , '2012-03-23 18:21:01.083' )
select
eventdate, valuec , sum(valued) as valuedSum , recordedwhen
from
@tbl
group by eventdate, valuec, recordedwhen
我得到三行。但我真正想要的是:
--
-- eventdate valuec valuedSum recordedwhen
-- ---------- ------ ----------- ----------------------
-- 2012-03-22 11111 3 2012-03-23 17:21:01.08
-- 2012-03-22 22222 9 2012-03-23 18:21:01.08
我不想要 tableid=1 的行,因为它是旧一批数据的一部分。较新的行表示稍后的插入(所有记录时具有相同日期时间的值对于批次是相同的)
因此,如果像这样插入新行:
insert into @tbl values ( 4 , '2012-03-22' , '22222' , 6 , '2012-03-24 18:21:01.083' )
那么数据应该是这样的:
-- eventdate valuec valuedSum recordedwhen
-- ---------- ------ ----------- ----------------------
-- 2012-03-22 11111 3 2012-03-23 17:21:01.08
-- 2012-03-22 22222 6 2012-03-24 18:21:01.08