0

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

假设我的数据库有 3 列(名称、类型和决策)。在名称字段中有 100 条记录,并且可以有重复。有 2 种不同的类型(在线和离线),以及 2 种决策(匹配或不匹配)。

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

该表如下所示:

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

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

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

4

1 回答 1

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
于 2013-07-25T17:26:17.527 回答