SQL语句求两行数据之间的差值
需求是这样的,下面的一组数据,是从设备里面读出来的,这个是一个累积计数,以135.252.126.57这个设备计算,08/18日计数是20245,08/19日读取时20245,说明在这个时间区间内读数没有变化。如果是多个设备,如何通过sql查询出来?
解决办法:
首先是要把数据从列转成行表达的方式。
这里主要是使用了select * from (TableA,TableB), TableA进行一次筛选,TableB进行一次筛选,然后通过TableA,TableB的关键字组合起来,从而获得想要的结果
语句如下:
select tablea.ip,tablea.importdate,tablea.Counterfull,tablea.Countertwin,tableb.Counterfull,tableb.Countertwin,(tablea.Counterfull+tablea.Countertwin-tableb.counterfull-tableb.Countertwin) as ColorDiff,tablea.counterblack,tableb.Counterblack,(tablea.Counterblack-tableb.Counterblack) as BlackDiff
from (select * from PrinterCounter where CONVERT(nvarchar(100),ImportDate,23)='2020-08-19') as tablea,
(select * from PrinterCounter where CONVERT(nvarchar(100),ImportDate,23)='2020-08-18') as tableb
where tablea.ip=tableb.ip
查询结果如下:
扩展:
如果用Lambda的话,可能要先构造两个查询导入到list中,然后通过list对比。等以后遇到再测试吧