当前位置: 代码迷 >> Sql Server >> 与前天数据对比赋值
  详细解决方案

与前天数据对比赋值

热度:27   发布时间:2016-04-24 09:34:33.0
与前一天数据对比赋值
sql数据库中 有 四个字段产品号,设备号,日期,变更区分 。
判断如果和前一天产品号和设备号相同则变更区分为0否则为1.
我现在取出当前天设备号,产品号及 前一天的 设备号和产品号如何匹配?
with TABA AS (SELECT PARTID,DeviceName,ProcessDate FROM process.dbo.Actual_Part),
TABB AS (SELECT Actual_Part.PartID,Actual_Part.DeviceName,Actual_Part.ProcessDate FROM process.dbo.Actual_Part LEFT JOIN TABA ON
Actual_Part.ProcessDate=DATEADD(DAY,-1,TABA.ProcessDate)) 
------解决思路----------------------
;WITH TABA AS(
SELECT PARTID,DeviceName,ProcessDate FROM process.dbo.Actual_Part
WHERE DATEDIFF(DAY,ProcessDate,GETDATE())=0
)
,TABB AS(
SELECT PARTID,DeviceName,ProcessDate FROM process.dbo.Actual_Part
WHERE DATEDIFF(DAY,ProcessDate,GETDATE())=1
)
UPDATE T1
SET 变更区分=1
FROM TABA T1 JOIN TABB T2
ON T1.PARTID=T2.PARTID AND T1.DeviceName=T2.DeviceName
WHERE T1.变更区分=0
是这样吗
------解决思路----------------------

--个人理解的意思,不知道对不对
             with TABA(PARTID,DeviceName,ProcessDate)  AS
            (SELECT PARTID,DeviceName,ProcessDate FROM process.dbo.Actual_Part),
     TABB(PARTID,DeviceName,ProcessDate) AS
            (SELECT Actual_Part.PartID,Actual_Part.DeviceName,Actual_Part.ProcessDate FROM process.dbo.Actual_Part LEFT JOIN TABA ON
                                              Actual_Part.ProcessDate=DATEADD(DAY,-1,TABA.ProcessDate)) 
update 数据表 set 区分变更=
case when taba.partid=tabb.partid and taba.devicename=tabb.devicename then 0
else
    1
end 
from taba,tabb
  相关解决方案