我有一个类似于下面结构的表格
table
ID EmployeeID factor
1. 100 A
2. 100 B
2. 100 C
我的要求是对于给定的 EmployeeID,我需要用数值替换因子并对因子求和,其中 A = 1 、 B=2 和 C=3
使用选择查询,我能够替换值并查看表格
select employeeid,
case factor
WHEN 'F' THEN 4
WHEN 'EC' THEN 2
WHEN 'E' THEN 1
ELSE 0
END as factor
From employee
where employee_id = 100
但是当我尝试使用 sum 和 group by 来获取查询语法错误时
select employeeid,count(*) as count
sum(case factor
WHEN 'F' THEN 4
WHEN 'EC' THEN 2
WHEN 'E' THEN 1
ELSE 0
END as factor) as factor
From employee
where employee_id = 100
group by employeeid,count
使用
GROUP BY and HAVING
获取特定员工的数据。
同时更正
SUM(CASE...END)
的说法
所以,SQL 查询应该是:
select employeeid,
count(employeeid),
sum(
CASE (factor)
WHEN 'F' THEN 4
WHEN 'EC' THEN 2
WHEN 'E' THEN 1
ELSE 0
END
) as factor
From employee
group by employeeid
having employeeid = 100
示例查询:db<>fiddle