我有一份报告要检查重复的“recs”,但有一点丢失并收到错误。看看吧!
Declare @StartDate as Datetime
Declare @EndDate as Datetime
set @StartDate = GetDate()-14
set @EndDate = GetDate()
SELECT *
FROM (SELECT dupl.machID, dupl.Location, dupl.place, dupl.recNumber,
MIN(realdupl.rcTransDate)
AS Firstrec, MAX(realdupl.rcTransDate) AS Lastrec
FROM
(SELECT rc.rcmachID AS machID, ck.ckLocation AS Location,
ck.ckLocationplace AS place, rc.rcrecNum AS recNumber, COUNT(*) as
NoOfrecs
FROM
(SELECT rcmachID, rcrecNum, rcTransDate, rcturnaroundIndicator FROM
ProBatchHostDbSec.dbo.vatrecs (NOLOCK)
)
AS rc
INNER JOIN machConfig AS ck WITH (NOLOCK)
ON rc.rcmachID = ck.ckmachID
WHERE rc.rcturnaroundIndicator = 0
AND ck.ckProductionmach = 'Y'
AND ck.ckLocationplace = 'IN'
GROUP BY rc.rcmachID, ck.ckLocation,
ck.ckLocationplace, rc.rcrecNum
HAVING COUNT(*) > 1
) AS dupl
INNER JOIN
(SELECT rcmachID, rcrecNum, rcTransDate, rcturnaroundIndicator FROM
ProBatchHostDbSec.dbo.vatrecs
AND dupl.recNumber = realdupl.rcrecNum
GROUP BY dupl.machID, dupl.Location, dupl.place, dupl.recNumber
) AS temp
WHERE temp.Firstrec != temp.Lastrec
AND temp.Lastrec BETWEEN @StartDate AND @EndDate
ORDER BY temp.machID, temp.Lastrecdbo.vatrecs --WITH (NOLOCK)
GROUP BY dupl.machID, dupl.Location, dupl.place, dupl.recNumber
) AS temp
当我运行此操作时,我收到错误“关键字'WHERE'附近的语法不正确。” 是不正确的语法??
提前致谢!
答案 0 :(得分:4)
INNER JOIN
(SELECT vsTermID, vsVoucherNum, vsTransDate, vsReversalIndicator FROM
ProBatchHostDbSec.dbo.vatVouchers
AND dupl.VoucherNumber = realdupl.vsVoucherNum
GROUP BY dupl.TerminalID, dupl.Location, dupl.Country, dupl.VoucherNumber
) AS temp
WHERE temp.FirstVoucher != temp.LastVoucher
加入什么条件?
答案 1 :(得分:1)
WHERE temp.FirstVoucher != temp.LastVoucher
<>这是标准。不确定是否使用!=对性能有任何小的影响......但MSFT更喜欢<>。