两种方案:
1、内嵌判断条件
SELECT COUNT(DISTINCT LP.LOT_NUMBER) AS ELZS
FROM (
SELECT LP.LOT_NUMBER,
LP.TRANSDATE,
LP.WORKORDERID,
LP.DEVICE_NUMBER,
ROW_NUMBER()
OVER (PARTITION BY LP.LOT_NUMBER
ORDER BY LP.TRANSDATE
) RN
FROM LOT_PROCESS LP
) LP
WHERE RN = 2
AND (LP.WORKORDERID LIKE 'PB%'
OR LP.WORKORDERID LIKE 'DB%')
AND LP.DEVICE_NUMBER IN ('M1-EL1-L1-01', 'M1-EL1-L1-02')
AND LP.TRANSDATE
BETWEEN CONVERT(VARCHAR(11),
DATEADD(DAY, CASE WHEN CONVERT(varchar(100), GETDATE(), 24) < '09:00:00' THEN - 1 ELSE 0 END,
GETDATE()), 120) + '08:00:00'
AND CONVERT(VARCHAR(11), DATEADD(
DAY,
CASE WHEN CONVERT(varchar(100), GETDATE(), 24) < '09:00:00' THEN - 1 ELSE 0 END,
GETDATE()), 120) + '19:59:59';
2、分别判断,然后再UNION ALL
SELECT COUNT(DISTINCT LP.LOT_NUMBER) AS ELZS
FROM (
SELECT LP.LOT_NUMBER,
LP.TRANSDATE,
LP.WORKORDERID,
LP.DEVICE_NUMBER,
ROW_NUMBER()
OVER (PARTITION BY LP.LOT_NUMBER
ORDER BY LP.TRANSDATE
) RN
FROM LOT_PROCESS LP
) LP
WHERE RN = 2
AND (LP.WORKORDERID LIKE 'PB%'
OR LP.WORKORDERID LIKE 'DB%')
AND LP.DEVICE_NUMBER IN ('M1-EL1-L1-01', 'M1-EL1-L1-02')
AND LP.TRANSDATE
BETWEEN CONVERT(VARCHAR(11), DATEADD(DAY, - 1, GETDATE()), 120) + '08:00:00'
AND CONVERT(VARCHAR(11), DATEADD(DAY, -1, GETDATE()), 120) + '19:59:59'
AND CONVERT(varchar(100), GETDATE(), 24) < '09:00:00'
UNION ALL
SELECT COUNT(DISTINCT LP.LOT_NUMBER) AS ELZS
FROM (
SELECT LP.LOT_NUMBER,
LP.TRANSDATE,
LP.WORKORDERID,
LP.DEVICE_NUMBER,
ROW_NUMBER()
OVER (PARTITION BY LP.LOT_NUMBER
ORDER BY LP.TRANSDATE
) RN
FROM LOT_PROCESS LP
) LP
WHERE RN = 2
AND (LP.WORKORDERID LIKE 'PB%'
OR LP.WORKORDERID LIKE 'DB%')
AND LP.DEVICE_NUMBER IN ('M1-EL1-L1-01', 'M1-EL1-L1-02')
AND LP.TRANSDATE
BETWEEN CONVERT(VARCHAR(11), GETDATE(), 120) + '08:00:00'
AND CONVERT(VARCHAR(11), GETDATE(), 120) + '19:59:59'
AND CONVERT(varchar(100), GETDATE(), 24) >= '09:00:00';