2017-09-04 138 views
0

我想根據sum(rtime-time)計算> = 1或< = -1的行數。計算從總和的行數

我的表

aono | aopos | artno | flogr | prgr | rtime | time | rdate  | 
7132 | 10 | 1234 | 20 | 20 | 2 | 1 | 2017-08-24 | 
7132 | 10 | 1234 | 30 | 30 | 1,3 | 1 | 2017-08-24 | 
7132 | 20 | 5678 | 20 | 29 | 1 | 3 | 2017-08-24 | 
7132 | 20 | 5678 | 30 | 31 | 0,4 | 1,5 | 2017-08-24 | 
7132 | 50 | 12 | 10 | 10 | 0,5 | 0,5 | 2017-08-24 | 

我做了這個查詢。

​​

返回以下結果

aono | aopos | artno | flogr | prgr | Diff 
7132 | 10 | 1234 | 20 | 20 | 1  
7132 | 20 | 5678 | 20 | 29 | -2 
7132 | 20 | 5678 | 30 | 31 | -1,1 

所以我需要幫助是創建一個計算基於上面的查詢行(DIFF)的數量的查詢。在這個例子中,正確的結果將是3

在此先感謝

/SISU

+0

將您當前的查詢包裝在一個deriv中編輯表,並對其行進行計數。 – jarlh

回答

4

你幾乎沒有只使用COUNT

SELECT COUNT(*) 
FROM 
(
    SELECT aono, aopos, artno, flogr, prgr, sum(rtime-time) AS Diff 
    FROM dbo.ao 
    WHERE (rdate Between '2017-08-01' AND '2017-08-31') AND (flogr = '20' OR flogr = '30') 
    GROUP BY aono, aopos, artno, flogr, prgr 
    HAVING SUM(rtime-time) >= '1' OR SUM(rtime-time) <= '-1') 
) t 
+0

那很簡單吧。非常感謝 :) – SisU

2

您需要在您的查詢運行COUNT

SELECT COUNT(*) FROM 
(SELECT aono, aopos, artno, flogr, prgr, sum(rtime-time) AS Diff 
FROM dbo.ao 
WHERE (rdate Between '2017-08-01' AND '2017-08-31') 
AND (flogr = '20' OR flogr = '30') 
GROUP BY aono, aopos, artno, flogr, prgr 
HAVING SUM(rtime-time) >= '1' OR SUM(rtime-time) <= '-1')