TSQL-使用自联接比较两列-计算昨天总计和#x27;今天';总共
我试图在一列中计算今天和昨天总数之间的差异。如果自连接不是最好的方法,那也没关系,无论哪种方法能给出我想要的结果都应该可以 要求:TSQL-使用自联接比较两列-计算昨天总计和#x27;今天';总共,sql,tsql,sql-server-2014,Sql,Tsql,Sql Server 2014,我试图在一列中计算今天和昨天总数之间的差异。如果自连接不是最好的方法,那也没关系,无论哪种方法能给出我想要的结果都应该可以 要求: 仅比较最近2天的数据,即使该表将有多天的数据,但每天只有一个条目 计算该列昨天总计与今天总计之间的差值 问题 下面的代码返回零,我不明白为什么 为什么不计算,我该怎么做才能满足要求 我想您需要lag(): 如果您只想要最后两天,那么: select top (1) t.* from (select t.*, (empcount - lag
我想您需要
lag()
:
如果您只想要最后两天,那么:
select top (1) t.*
from (select t.*,
(empcount - lag(empcount) over (order by countdate)) as diff
from #t1 t
) t
order by countdate desc;
注:这将“昨天”解释为表中的最后两天。如果您确实想要今天和昨天,那么可以使用where
子句:
select top (1) t.*
from (select t.*,
(empcount - lag(empcount) over (order by countdate)) as diff
from #t1 t
where countdate >= dateadd(day, -1, convert(date, getdate()))
) t
order by countdate desc;
我想您需要lag()
:
如果您只想要最后两天,那么:
select top (1) t.*
from (select t.*,
(empcount - lag(empcount) over (order by countdate)) as diff
from #t1 t
) t
order by countdate desc;
注:这将“昨天”解释为表中的最后两天。如果您确实想要今天和昨天,那么可以使用where
子句:
select top (1) t.*
from (select t.*,
(empcount - lag(empcount) over (order by countdate)) as diff
from #t1 t
where countdate >= dateadd(day, -1, convert(date, getdate()))
) t
order by countdate desc;
旁白:将
datetime
用于date
值可能会有问题。除了午夜,你还有其他时间值吗?@HABO,是的,有时我想知道它发生的时间,以确保它在另一个进程之后发生。旁白:使用datetime
表示date
值可能会有问题。你真的有午夜以外的时间值吗?@HABO,是的,有时候我想知道它发生的时间,以确保它在另一个过程之后发生。谢谢@GordonLinoff。当我将empcount更改为INT时,这起作用了。我感谢你的帮助!谢谢@GordonLinoff。当我将empcount更改为INT时,这起作用了。我感谢你的帮助!