0
Node.js에 Sequelize ORM을 사용하면 select 문에서 CASE/WHEN 표현식을 어떻게 사용합니까?Sequelize에서 CASE WHEN 표현식을 사용하는 방법?
Sequelize Documentation에 따라 SQL 표현 CASE을 사용하는 참조 또는 예가 없습니다. 이것이 가능한가? 여기
내 예입니다 :SQL
SELECT userId, Status,
MAX(CASE Type WHEN 'Employee' THEN Rate ELSE 0 END) AS "Employee",
MAX(CASE Type WHEN 'School' THEN Rate ELSE 0 END) AS "School",
MAX(CASE Type WHEN 'Public' THEN Rate ELSE 0 END) AS "Public",
MAX(CASE Type WHEN 'Other' THEN Rate ELSE 0 END) AS "Other"
FROM Database.dbo.invoice
WHERE Status IN ('Included', 'Excluded')
GROUP BY userId, Status
Sequelize
var query = {
attributes: ['userId'], // need to include Rate (as Employee, School, Public, Other for each CASE/WHEN)
/*
MAX(CASE Type WHEN 'Employee' THEN Rate ELSE 0 END) AS "Employee",
MAX(CASE Type WHEN 'School' THEN Rate ELSE 0 END) AS "School",
MAX(CASE Type WHEN 'Public' THEN Rate ELSE 0 END) AS "Public",
MAX(CASE Type WHEN 'Other' THEN Rate ELSE 0 END) AS "Other"
*/
where: {
user: userId,
Type: ['Employee', 'School', 'Public', 'Other'],
},
group: ['userId'],
raw: true
};
models.invoice.findAll(query).then(result => {
console.log(result);
});
데이터베이스 구조
01 2,348,665,132,원하는 결과 :
+--------+----------+--------+--------+-------+
| userId | Employee | School | Public | Other |
+--------+----------+--------+--------+-------+
| 1 | 2.00 | 3.50 | 4.00 | 2.50 |
+--------+----------+--------+--------+-------+
| 2 | 3.75 | 4.25 | 2.00 | 3.00 |
+--------+----------+--------+--------+-------+