Я предлагаю изменить дизайн вашей таблицы следующим образом:
CREATE TABLE A (
serial_no varchar(10),
p01_pass_fail tinyint,
p02_pass_fail tinyint,
p03_pass_fail tinyint,
p04_pass_fail tinyint,
p05_pass_fail tinyint
)
Затем сохраните 0 для сбоя и 1 для пропуска.Это значительно упрощает запрос:
SELECT
serial_no,
cnt AS pass,
5 - cnt AS fail
FROM
(
SELECT,
serial_no,
p01_pass_fail + p02_pass_fail + p03_pass_fail + p04_pass_fail + p05_pass_fail AS cnt
FROM yourTable
) t
Метки pass
и fail
действительно представляют собой элементы представления и не относятся к вашей модели данных.Если вы хотите преобразовать целое число 0/1 в метку, вы все равно можете сделать это с помощью выражения CASE
, например
CASE WHEN p01_pass_fail = 1 THEN 'pass' ELSE 'fail' END