2016-08-05 51 views
-5

當我運行此查詢不知道爲什麼這個節目錯誤發現語法錯誤

附近有語法錯誤)'

謝謝大家幫忙

Select 
    Sum(DateDiff(s, Toc1.OutTime, (Select Top 1 Intime 
            From tblTokenLogs 
            Where TokenId = Toc1.TokenId 
            And LogId != Toc1.LogId 
            And LogId > Toc1.LogId))) as Sec 
From 
    tblTokenLogs As Toc1 
Where 
    Toc1.TokenId = 1 
    And Toc1.OutTime != '') as SecTotal 
+0

錯字 - 這些總是比較容易,如果你格式化你的代碼被發現...... – sgeddes

+1

您有一個額外的,不必要的' )as'SecTotal'在你的'WHERE'子句的最後一行之後 - 只需刪除那行... –

+0

remove)from LINE'And Toc1.OutTime!='')as SecTotal' –

回答

0

將此查詢與您的查詢進行比較,您將會明白出了什麼問題!

SELECT SUM(
      DATEDIFF(
       s, 
       Toc1.OutTime, 
       (
        SELECT TOP 1 Intime 
        FROM tblTokenLogs 
        WHERE TokenId = Toc1.TokenId 
          AND LogId != Toc1.LogId 
          AND LogId > Toc1.LogId 
       ) 
      ) 
     )    AS Sec 
FROM tblTokenLogs AS Toc1 
WHERE Toc1.TokenId = 1 
     AND Toc1.OutTime != '' 

無用的別名) as SecTotal

+0

現在顯示這種類型的錯誤「Can not perform an骨料e函數在包含聚合或子查詢的表達式上。「@ pedram – Herry

+0

在末尾使用'GROUP BY Sec'。 – pedram

+0

可能無法按秒排序顯示無效欄 – Herry

0

試試這個,

Select 
    Sum(DateDiff(s, Toc1.OutTime, Toc2.Intime)) as Sec 
From 
    tblTokenLogs As Toc1 
OUTER APPLY ( Select Top 1 Intime 
       From tblTokenLogs 
       Where TokenId = Toc1.TokenId 
        And LogId != Toc1.LogId 
        And LogId > Toc1.LogId 
       ) AS Toc2 
Where 
    Toc1.TokenId = 1 
    And Toc1.OutTime != ''