对 SQL 完全陌生,所以很抱歉,如果这是基本的,但是虽然我可以找到一篇又一篇文章解释如何计算单个列,但我找不到解释如何计算包含特定文本的所有列/单元格的文章。
我有一个表,其中包含 3n0+ 员工姓名作为列标题。这些列包含出勤、员工 ID 和出勤日志,因此每列包含一个
1 = 现在 0 = 缺席
I;d 就像一个查询,它将计算每列中的所有 1(不包括第 1 列,因为这是员工代码)并返回结果(所有 1 的总和/计数)并使用以下命令返回每列的结果标题(员工姓名。)
即我的桌子看起来像:
本 | 凯特 | 彼得 | 莎莉 |
---|---|---|---|
1 | 1 | 0 | 1 |
0 | 0 | 3 | 1 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 |
我想要的结果是:
BEN: 4
Kate: 2
Peter: 3
Sally: 5
我同意你糟糕的数据库设计,如果可能的话你应该重新设计它。如果不是,您可以使用 UNPIVOT 模式。您没有按 RDBMS 版本标记您的问题,所以我将提供 MS SQL 示例:
SELECT Employee, Cnt
FROM
(
SELECT
SUM(Emp1) Emp1, SUM(Emp2) Emp2, SUM(Emp3) Emp3
FROM T
) p
UNPIVOT
(
Cnt for Employee IN
(Emp1, Emp2, Emp3)
) AS upvt;
您可以只使用 sum 函数
select employeeId,
sum(Ben),
sum(Kate)
from yourtable;