0

我很难获得标准查询来完成它的工作......我确定我错过了一些愚蠢的东西。

我有一个用于此查询的包含两列的表 - 该表称为“调用”,我使用的两个字段是“shiftID”和“type”。(类型是一个查找字段,将包含 2 个固定值中的 1 个)

我需要做的所有查询就是为每个班次 id 计算两个固定值出现的次数 - 所以结果看起来像这样:

| shiftID | Type1 | Type2 |
---------------------------
| 131011  |   5   |   2   |
---------------------------
| 131012  |   7   |   6   |
---------------------------
| 131013  |   1   |   3   |
---------------------------

任何帮助将不胜感激 - 谢谢!

4

2 回答 2

0

试试这个:按 shiftId 从呼叫组中选择 shiftId, sum(type1),sum(type2) 如果我误解了您的问题,请发表评论...

于 2013-10-14T02:50:53.243 回答
0

以下是您可以达到预期结果的方法。

假设这样的数据集:

ShiftID  Type
-------  -----------
131011   fixedvalue1
131012   fixedvalue1
131013   fixedvalue2
...      ...

你可以先这样改造它:

SELECT
  ShiftID,
  IIF(Type = 'fixedvalue1', 1, 0) AS Type1,
  IIF(Type = 'fixedvalue2', 1, 0) AS Type2
FROM calls

这将为您提供以下行集:

ShiftID  Type1  Type2
-------  -----  -----
131011   1      0
131012   1      0
131013   0      1
...      ...    ...

对于每一个ShiftID现在都有两列,Type1其中一列Type2是 1,另一列是 0。如果您将此结果集分组ShiftID并聚合 (SUM) 两列,您将获得每个固定类型的计数ShiftID

SELECT
  ShiftID,
  SUM(IIF(Type = 'fixedvalue1', 1, 0)) AS Type1,
  SUM(IIF(Type = 'fixedvalue2', 1, 0)) AS Type2
FROM calls
GROUP BY ShiftID
于 2013-10-15T08:27:51.490 回答