SQL报告错误在哪里

时间:2012-04-13 11:01:16

标签: sql tsql sql-server-2005

我有一份报告要检查重复的“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'附近的语法不正确。” 是不正确的语法??

提前致谢!

2 个答案:

答案 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更喜欢<>。

相关问题