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