我必须为学校项目创建一个postgreSQL视图。
我有五个名为:
的表现在我需要一个视图,它向我展示按时间顺序排列的变化(每个objectId):
| Date | type | ammount In | ammount out |
+------------+--------+------------+-------------+
| 10-10-2007 | Input | 10 | |
| 11-10-2007 | Output | | 5 |
| 12-10-2007 | Input | 20 | |
我完全不知道如何做到这一点,所以我非常感谢你的帮助。 如果需要更多细节,请不要犹豫=)
答案 0 :(得分:0)
视图更多地是来自其他表的数据的组合,而不是新信息。我建议使用新表来显示更改,然后使用triggers或者如果您通过存储过程为表插入/更新/ etc数据,那么只需通过该过程将插入添加到更改表中。触发器放在您的表上例如,输出行表上的'on insert'触发器在另一个表(更改表)上执行操作(在本例中为插入)。
答案 1 :(得分:0)
select "date", type, "amount in", "amount out"
from (
select 'output' as "type", "date", amount as "amount out", 0 as "amount in"
from outputline
union all
select 'input' as "type", "date", 0 as "amount out", amount as "amount in"
from inputline
) s
order by "date"
答案 2 :(得分:0)
SELECT o.date, 'Output' AS type, ol.amount AS amount_out, NULL AS amount_in
FROM outputline ol
JOIN output o USING (outputid)
UNION ALL
SELECT i.date, 'Input', NULL, il.amount
FROM inputline il
JOIN input i USING (inputid)
ORDER BY date, type;
ORDER BY
或UNION
后的UNION ALL
子句适用于整个结果集。
我按type
订购,以打破与日期的关系,以便在输出之前输入。