2017-09-04 130 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')