Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL错误1351可以';不要创建视图_Mysql_Finance - Fatal编程技术网

MySQL错误1351可以';不要创建视图

MySQL错误1351可以';不要创建视图,mysql,finance,Mysql,Finance,下面是我试图创建视图的查询。当我运行它时,“我得到错误代码:1351。视图的SELECT包含一个变量或参数”。为什么会这样?有没有一种方法可以在不改变当前查询内容的情况下创建视图 谢谢 create view delta as select rnk2.`date`, case when rnk1.r1=1 and rnk2.r2=1 then rnk1.X else rnk2.X-rnk1.X end as 'Daily Total' from ( select `date`,X,@r1:

下面是我试图创建视图的查询。当我运行它时,“我得到错误代码:1351。视图的SELECT包含一个变量或参数”。为什么会这样?有没有一种方法可以在不改变当前查询内容的情况下创建视图

谢谢

create view delta as
select rnk2.`date`, 
case when rnk1.r1=1 and rnk2.r2=1 then rnk1.X else rnk2.X-rnk1.X end as 'Daily Total'
from (
  select `date`,X,@r1:=@r1+1 as r1
  from  samples, (select @r1:=0) a 
  order by `date` ) rnk1
inner join 
  (select `date`,X,@r2:=@r2+1 as r2
   from  samples, (select @r2:=0) b
   order by `date`) rnk2
on (rnk1.r1=1 and rnk2.r2=1) or (rnk1.r1+1=rnk2.r2) 
order by rnk2.`date`;

mySQL视图不允许用户变量或子查询,因此我更改了查询并将视图分为两部分

第一个视图将根据日期在表样本上指定一个行号。然后,第二个视图将使用第一个视图(sample_vw)进行主查询

create view sample_vw as
select a.`date`, a.X, count(*) as rn
FROM samples a
JOIN samples b 
ON a.`date` >= b.`date`
GROUP BY a.`date`;

create view delta as
SELECT t1.`date`,
case when t1.rn=1 and t2.rn=1 then t1.X else t2.X-t1.X end as 'Daily Total'
FROM sample_vw t1
INNER JOIN sample_vw t2
ON t1.rn+1=t2.rn or (t1.rn=1 and t2.rn=1);

工作得很好!谢谢,我也在考虑同样的解决方案,但不知道如何在柜台工作。谢谢你的帮助!很乐意帮忙!给你更多的力量