I have a sql query:
SELECT field1, field2,
CASE
WHEN field1=1 THEN 'a'
ELSE 'b'
END
AS field3
FROM test
and I want to implement it with sequelizejs
,
const params = {
attributes: //DO SELECT CASE,
};
yield Model.findAll(params);
Can anyone help me? Thank you.
I have a sql query:
SELECT field1, field2,
CASE
WHEN field1=1 THEN 'a'
ELSE 'b'
END
AS field3
FROM test
and I want to implement it with sequelizejs
,
const params = {
attributes: //DO SELECT CASE,
};
yield Model.findAll(params);
Can anyone help me? Thank you.
Share Improve this question edited Aug 12, 2017 at 14:00 Gherbi Hicham 2,5844 gold badges29 silver badges42 bronze badges asked Nov 7, 2016 at 10:03 MamenMamen 1,4367 gold badges22 silver badges47 bronze badges1 Answer
Reset to default 19For the people that are still looking for this answer
Model.findAll({
attributes: [[models.sequelize.literal('CASE WHEN "field1" = true THEN 55 ELSE 23 END'), 'field3']]
}
or
Model.findAll({
attributes: { include: [[models.sequelize.literal('CASE WHEN "field1" = true THEN 55 ELSE 23 END'), 'field3']]}
}
So in my example when field1 is true it will return 55 else 23. This will generate a query like
SELECT CASE WHEN "field1" THEN 55 ELSE 23 END AS "field3" FROM "models"
For more information you can look in the documentation http://docs.sequelizejs.com/en/latest/docs/querying/#attributes