mysql - SQL 创建视图
问题描述
我有一个这样的查询:
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 服务器版本相对应的手册,以在第 4 行的 'SET @prevValuepo :=0, @prevValuefc :=0, po-@prevValuepo AS selisihpo ,@prevValu' 附近使用正确的语法
解决方案
您不能在语句中包含这些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'
推荐阅读
- git - 我的提交在 GitHub 中显示为另一个用户?
- python - 麻烦简单地在 Sqlite3 表中插入数据
- flutter - DefaultTabController & SingleChildScrollView & TabBarView 不能共同工作
- android - 如何给你的布局一个边框标题?
- javascript - 带有自动播放 Chrome 的 iFrame 技巧不起作用
- reactjs - 已经创建了一个反应应用程序(使用 npx create-react-app),它在刷新时会崩溃
- python - Python异步等待与定时循环
- c# - 如何统一 SetActive() Prefabbed Canvas 子按钮/文本?
- javascript - 导航到另一个页面并基于选定的导航链接打开特定的导航丸选项卡
- r - 为什么梯度下降几乎每次都会爆炸?