从总和中计算行数

Count number of rows from sum

我正在尝试根据 sum(rtime-time) 计算 >= 1 或 <= -1 的行数。

我的table

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   | 

我已经查询过了。

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'

即returns下面的结果

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.

提前致谢

/师大

你快到了,只需使用 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

您需要运行 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')