假设我在名为 tbl_decisions 的表中有以下数据:
决定1 | 决定2 | 打开 | 关闭 | 当前 |
---|---|---|---|---|
A | A | 销售 | 营销 | 营销 |
B | C | 人力资源 | 它 | 人力资源 |
D | F | 营销 | 营销 | 人力资源 |
D | F | 营销 | 营销 | 营销 |
E | B | 它 | 它 | 它 |
E | B | 它 | 人力资源 | 它 |
这不是一个详尽的列表,而且我正在处理一个非常大的数据集,因此我们可以假设会有各种方式的决策组合。
一些信息,以便您可以理解数据: 立案并做出两项决定。 “开案”是指案件开案时案件所在的地方。 “结案”是指结案时案件所在的地方。 “当前”是指此时案件当前所在的位置。
对于每个决策组合(A&B、A&B、A&C...F&A、F&B、F&C 等),我试图计算每个部门有多少个案例。
我希望将每个部门的结果分为 3 列(我有 5 个部门)。
因此,使用上面的示例数据并仅考虑“营销”和“IT”部门,我应该得到以下结果:
决定1 | 决定2 | 营销_打开 | 营销_关闭 | 营销_当前 | IT_打开 | 关闭 | IT_剪切 |
---|---|---|---|---|---|---|---|
A | A | 0 | 1 | 1 | 0 | 0 | 0 |
B | C | 0 | 0 | 0 | 0 | 1 | 0 |
C | F | 0 | 0 | 0 | 0 | 0 | 0 |
D | F | 2 | 2 | 1 | 0 | 0 | 0 |
E | B | 0 | 0 | 0 | 2 | 1 | 2 |
F | E | 0 | 0 | 0 | 0 | 0 | 0 |
我已完成以下操作:
SELECT
DECISION1,
DECISION2,
(SELECT COUNT (*) FROM TBL_DECISIONS D2 WHERE D2.OPEN = 'Marketing' AND D2.DECISION1 = D1.DECISION1 AND D2.DECISION2 = D1.DECISION2) AS 'Marketing Open',
(SELECT COUNT (*) FROM TBL_DECISIONS D2 WHERE D2.CLOSE = 'Marketing' AND D2.DECISION1 = D1.DECISION1 AND D2.DECISION2 = D1.DECISION2) AS 'Marketing Close',
(SELECT COUNT (*) FROM TBL_DECISIONS D2 WHERE D2.OPEN = 'Marketing' AND D2.DECISION1 = D1.DECISION1 AND D2.DECISION2 = D1.DECISION2) AS 'Marketing Close',
(SELECT COUNT (*) FROM TBL_DECISIONS D2 WHERE D2.OPEN = 'IT' AND D2.DECISION1 = D1.DECISION1 AND D2.DECISION2 = D1.DECISION2) AS 'IT Open',
(SELECT COUNT (*) FROM TBL_DECISIONS D2 WHERE D2.CLOSE = 'IT' AND D2.DECISION1 = D1.DECISION1 AND D2.DECISION2 = D1.DECISION2) AS 'IT Close',
(SELECT COUNT (*) FROM TBL_DECISIONS D2 WHERE D2.OPEN = 'IT' AND D2.DECISION1 = D1.DECISION1 AND D2.DECISION2 = D1.DECISION2) AS 'IT Close'
FROM
TBL_DECISIONS D1
GROUP BY
DECISION1,
DECISION2
我知道这不是最好的方法(根本!),而且它有太多不必要的处理能力,但此时我的头脑已经走上了正轨,我不知道还能怎么做它。我似乎无法指出它。我并不是真的想要代码,我只是想知道你会怎么做?我知道有一种更简单的方法可以做到这一点,而且不需要花很多时间来运行。
Brad 在评论中提供了答案:
您可以在选择中执行 case 语句,例如 SUM(Case when D2.Open = 'Marketing' THEN 1 ELSE 0 END ) 当符合您的条件时,这会给您一个 1,然后您将它们相加。然后,您可以为您想要获取计数的每个金额创建多个 case 语句。 – 布拉德 2 月 9 日 17:55