Приведенные примеры работают, но если ввести ограничение по дате, то все рушится.
Например так:
SELECT
DATE_FORMAT(dtcreate, '%d %M %Y') as dtcreate,
IF(state = 1, sum(plumb), NULL) AS value1,
IF(state = 3, sum(plumb), NULL) AS value2
FROM tblplumb
WHERE 1
GROUP BY DATE_FORMAT(dtcreate, '%d .%m.%Y')
работает, а так:
SELECT
DATE_FORMAT(dtcreate, '%d %M %Y') as dtcreate,
IF(state = 1, sum(plumb), NULL) AS value1,
IF(state = 3, sum(plumb), NULL) AS value2
FROM tblplumb
WHERE dtcreate BETWEEN @start AND @STOP
GROUP BY DATE_FORMAT(dtcreate, '%d .%m.%Y')
уже не работает, и если попробовать вставить ограничение в условие if — тоже не работает.
С вариантом:
SELECT value*(status=1) AS value1, value*(state=2) AS value2 FROM table
та же беда…