我需要生成一个输出以显示针对id(来自表1)的不同注释(来自table2),但是该注释不是必须存在于表2中。
尝试了Case函数,但它也将NULL值作为额外的一行
表:员工编号
ID Name
100021 Bob
100023 Tom
100024 Jim
表:员工备注
ID remark remark text
100021 job manager
100021 salary 5000
100021 dept classic
100023 job CSR
100023 salary 4000
100024 dept customer
必填结果
ID Name Job Salary Dept
100021 Bob manager 5000 classic
100023 Tom CSR 4000 NA
100024 Jim NA NA customer
答案 0 :(得分:2)
您似乎正在寻找条件聚合:
SELECT
i.id,
i.name,
COALESCE(MAX(CASE WHEN r.remark = 'job' THEN r.remark_text END), 'NA') AS job,
COALESCE(MAX(CASE WHEN r.remark = 'salary' THEN r.remark_text END), 'NA') AS salary,
COALESCE(MAX(CASE WHEN r.remark = 'dept' THEN r.remark_text END), 'NA') AS dept
FROM
employee_id AS i
INNER JOIN employee_remark r ON r.id = i.id
GROUP BY
i.id,
i.name
查询的工作方式是将两个表连接在一起,然后按用户汇总结果。在SELECT
子句中,MAX(CASE WHEN WHEN r.remark = 'job' ...)
用于将行从employee_remark
透视成列。 COALESCE()
函数检测到NULL
的值,并将其替换为字符串'NA'
。
答案 1 :(得分:0)
让我知道是否有帮助
await app.listen(process.env.PORT || 3000);