Reputation: 1
I have to convert this from MySQL to PostgreSQL:
IF(
IF(
MT.SLIPTYPE=8,
SUM(MT1.TOTAL),
0-SUM(MT1.TOTAL)
) IS NULL,
0.00,
IF(
MT.SLIPTYPE=8,
SUM(MT1.TOTAL),
0-SUM(MT1.TOTAL)
)
) AS Totalcamp
to a CASE
statement. Can anyone help me?
I have tried like this, but it was not accepted:
case when MT.SLIPTYPE = 8
then
case when sum(MT1.TOTAL) is null then 0.00 else sum(MT1.TOTAL) end
else
case when (0 - sum(MT1.TOTAL)) is null then 0.00 else (0-SUM(MT1.TOTAL)) end
end as TOTALSCHEME
Upvotes: 0
Views: 33
Reputation: 246523
That should be straightforward:
CASE WHEN CASE WHEN MT.SLIPTYPE = 8
THEN SUM(MT1.TOTAL)
ELSE 0 - SUM(MT1.TOTAL)
END IS NULL
THEN 0.00
ELSE CASE WHEN MT.SLIPTYPE = 8
THEN SUM(MT1.TOTAL)
ELSE 0 - SUM(MT1.TOTAL)
END
END) AS Totalcamp
But it could be simplified considerably:
coalesce(
CASE WHEN MT.SLIPTYPE = 8
THEN SUM(MT1.TOTAL)
ELSE 0 - SUM(MT1.TOTAL)
END,
0.0
)
Upvotes: 1