如何根据不同的标准获得多个计数

时间:2013-07-25 17:01:40

标签: sql count

我需要帮助进行查询,所以我第一次找到了这个网站,并希望有人知道如何做到这一点。

让我们说我的数据库有3列(名称,类型和决策)。在“名称”字段中,有100条记录,可能存在重复项。有2种不同的类型(在线和离线),以及2种决定(匹配或不匹配)。

我需要的是计算每种类型的匹配和不匹配,按名称分组。

表格如下所示:

Name|Online Match Count|Online Mismatch Count|Offline Match Count|Offline Mismatch Count|

此外,如果任何字段的计数为0,我希望它也显示为0。

有人知道怎么做吗?我将不胜感激。

1 个答案:

答案 0 :(得分:1)

这是一种常用技术,称为透视查询。

SELECT
  Name,
  SUM(CASE WHEN Type='online' AND Decision='Match' THEN 1 ELSE 0 END) as "Online Match Count",
  SUM(CASE WHEN Type='online' AND Decision='Mismatch' THEN 1 ELSE 0 END) as "Online Mismatch Count",
  SUM(CASE WHEN Type='offline' AND Decision='Match' THEN 1 ELSE 0) as "Offline Match Count",
  SUM(CASE WHEN Type='offline' AND Decision='Mismatch' THEN 1 ELSE 0 END) as "Offline Mismatch Count"
FROM TableName
GROUP BY Name