我有这个表(见下文),其中的行来自相同的"id"但是不同的"代码"资本/费用如下所示。需要能够生成一个对"值"求和的输出"资本代码"one_answers"费用代码"在两个单独的栏中。我尝试使用Where和Alias,但遇到了问题。我的数据视图表名:budgetcell_view我的数据文件如下所示:
projectid | code | codename | fieldtypename | value | 6 | 01-00-000 | 资本 | cost1 | 325000 | 6
---|---|---|---|---|
02-00-000 | 费用 | cost1 | 250000 | |
01-00-000 | 资本 | cost1 | 200000 | |
02-00-000 | 费用 | cost1 | 125000 | |
01-00-000 | 资本 | cost1 | 400000 | |
02-00-000 | 费用 | cost1 | 210000 | |
9 | 01-00-000 | 资本 | cost1 | 550000 |
9 | 02-00-000 | 费用 | cost1 | 330000 |
在本例中,您可以简单地使用case when构造创建这样的查询:
SELECT projectid,
SUM(CASE WHEN code = '01-00-000' THEN value ELSE 0 END) capital_value,
SUM(CASE WHEN code != '01-00-000' THEN value ELSE 0 END) expense_value
FROM table1
GROUP BY projectid ORDER BY projectid;
请参阅这里的工作示例:db<>fiddle请注意,如果有更困难的选项(不仅仅是capital或expense),您可能需要扩展这个查询或修改它,这就是我要求您提供整个表数据的原因。