我通常使用sum(case)来获得一些列的总和:
i.e. SUM(CASE WHEN over05 = 'OK' THEN 1 ELSE 0 END) AS OK_05
当我有一个包含两个值的列时,这是完美的,但是当我有一个列有三个值的列时:
i.e. over 05 = '1' or 'X' or '2'
我该怎么做(案例)?
答案 0 :(得分:1)
如果您希望所有三个值都返回相同的值,则应使用IN()
:
SUM(
CASE
WHEN over05 IN ('1', 'X', '2') THEN 1
ELSE 0 END
) AS OK_05
如果您希望每个值返回不同的值,则应使用多个WHEN ... THEN
:
SUM(
CASE
WHEN over05 = '1' THEN 1
WHEN over05 = 'X' THEN 2
WHEN over05 = '2' THEN 3
ELSE 0 END
) AS OK_05