Объединение объединяет только строки, которые не идентичны. Так что для ваших целей объединение не является правильным выбором во всех случаях.
Итак, с этой таблицей
CREATE TABLE operation
(`id` int, `OPVerfahren` varchar(10))
;
INSERT INTO operation
(`id`, `OPVerfahren`)
VALUES
(1, '0'),
(2, '1'),
(4, '0'),
(5, '20'),
(6, '0'),
(7, '1'),
(8, '20'),
(9, '0'),
(10, '0')
;
И с этим оператором выбора
SELECT "Surgery1",SUM(IF (op.OPVerfahren = "0",1,
if( op.OPVerfahren = "1",1,
if (op.OPVerfahren = "20", 1,0)
)
)
) "Surgery1"
FROM operation op
union
SELECT "Surgery2", SUM(IF (op.OPVerfahren = "0",1,
if( op.OPVerfahren = "1",1,
if (op.OPVerfahren = "20", 1,0)
)
)
) "Surgery2"
FROM operation op
Вы получаете следующеерезультат
Surgery1 Surgery1
Surgery1 9
Surgery2 9
Какой правильный результат для этого примера. Конечно, у вас есть это, чтобы приспособиться к вашей фактической структуре и данным
Я лично сделал бы следующее
SELECT SUM(IF (op.OPVerfahren = "0",1,
if( op.OPVerfahren = "1",1,
if (op.OPVerfahren = "20", 1,0)
)
)
) "Surgery1",
SUM(IF (op.OPVerfahren = "0",1,
if( op.OPVerfahren = "1",1,
if (op.OPVerfahren = "20", 1,0)
)
)
) "Surgery2"
FROM operation op
Что бы вы получили
Surgery1 Surgery2
9 9
Но ваш оригиналкажется, что вы хотели два ряда, так что ...