我对此有疑问:
CREATE VIEW dashboard
AS
SET @prevValuepo := 0;
SET @prevValuefc := 0;
SELECT *,po-@prevValuepo AS selisihpo ,@prevValuepo:= po,forecast-@prevValuefc AS selisihfc ,@prevValuefc:= forecast
FROM view_t_dasboard WHERE tahun= '2020' ORDER BY bulan ASC
但是为什么不能创建表视图
错误:#1064-您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以在'SET @prevValuepo:= 0,@prevValuefc:= 0,附近使用正确的语法, po- @ prevValuepo AS selisihpo,@ prevValu'在第4行
答案 0 :(得分:0)
SET
语句中不能包含这些CREATE VIEW
声明。另外,由于select
子句中表达式的求值顺序未定义,因此您的查询甚至可能无法始终执行您想要的操作。
如果运行的是MySQL 8.0,我建议使用窗口函数而不是用户定义的变量。我认为您想要的逻辑是:
create view dashboard as
select
t.*,
po - lag(po, 1, 0) over(order by bulan) as selisihpo,
forecast - lag(forecast, 1, 0) over(order by bulan) as selisihfc
from view_t_dasboard t
where tahun= '2020'