我的查询
错误:选择在此服务器版本的此位置无效,期望:'(',WITH
set @prev="SAME";
select `date`, `COL1` , `COL2` ,
if( `COL1`>`COL2` and ( (@prev="SAME") or (@prev="UP") ) ) then
"DOWN", @prev:="DOWN"
else if( `COL1` < `COL2` and ( (@prev="SAME") or (@prev="DOWN") ) ) then
"UP", @prev:="UP"
else
"SAME"
END IF
as 'sign'
from
temp;
答案 0 :(得分:1)
您不能在查询中使用IF...THEN
。您可以使用IF(condition, truevalue, falsevalue)
或CASE WHEN condition THEN value1 WHEN condition2 THEN value2 ELSE something END
。
IF...THEN
是过程语法。
答案 1 :(得分:0)
以下是答案,它确实有效:
set @prev="SAME";
select date, COL1 , COL2 ,
CASE
WHEN( COL1>COL2 and ( (@prev="SAME") or (@prev="UP") ) )
THEN
@prev:="DOWN"
WHEN( COL1 < COL2 and ( (@prev="SAME") or (@prev="DOWN") ) )
THEN
@prev:="UP"
ELSE "SAME"
END as 'sign'
from
temp;