1

我有一组如下所示的数据

Name  Time   Perc   Group  Mode  Control  Cancelled
A     10:52  10.10   10     0      1         0
B     09:00  10.23   10     1      1         1
C     12:02  12.01   12     0      1         1
D     10:45  12.12   12     1      7         1
E     12:54  12.56   12     1      3         0
F     01:01  13.90   13     0      11        1
G     02:45  13.23   13     1      12        1
H     09:10  13.21   13     1      1         0

我需要一个像下面这样的输出;

Group  Perc   Cancelled
 10    20.33     1
 12    36.69     2
 13    40.34     2

我得到的是类似的东西;

Group  Perc   Cancelled
 10    20.33     5
 12    36.69     5
 13    40.34     5

我不知道该怎么称呼它,我脑子里有个东西叫它像 CTE?,但我真的想不通。

这是我的来源;

 SELECT Group, SUM(Perc), Cancelled FROM
 (SELECT Group, Perc, (SELECT COUNT(*) FROM tblName WHERE Cancelled=1) AS Cancelled    FROM tblName WHERE 1=1 AND Group>=10)dt
 GROUP BY Group, Cancelled
4

1 回答 1

3

从您的示例中,您不需要嵌套查询、任何递归等......

SELECT
  Group,
  SUM(Perc)        AS total_perc,
  SUM(cancelled)   AS total_cancelled
FROM
  tblName
WHERE
  1=1
  AND Group >= 10
GROUP BY
  Group

如果您确实有一些不同的数据,那么您可能想要使用类似...

SUM(CASE WHEN cancelled > 0 THEN 1 ELSE 0 END)   AS total_cancelled
于 2013-07-11T02:19:44.387 回答