2
我想将前一行的列值存储在变量中,然后将此变量值与当前行的列进行比较。在MySQL中,例如在sqlfiddle在选择查询中使用变量
所以我们来简单的例子相同的SQL小提琴加载
create table align1 (col1 varchar(100),col2 varchar(100));
insert into align1 values ('1','1');
insert into align1 values ('1','1');
insert into align1 values ('10','1');
insert into align1 values ('100','1');
我想实现的是如果COL1值相同的前一行和当前行然后增加
查询:
select col1,col2,if(@temp1=col1,@i:[email protected]+1, @i:=1) as _keycol,@temp1:=col1 from align1,(select @temp1:=null,@i:=0)t
一切都在mysql的完美。
现在我想在sql server中实现同样的查询。
在mysql我已经使用会话变量,所以我不需要声明,但在SQL服务器中,我需要首先声明。
我尝试以下SQL Server 2012中查询,sqlfiddle
declare @temp1 varchar(1024)='',@i int =0
select col1,col2,case when @temp1=col1 then @[email protected]+1 else @i=1 end as _keycol,@temp1=col1 from align1;
我不能执行上面的查询和它给我的错误:
Incorrect syntax near '='.
然后,我只是想增加数请确保我能够在选择查询中增加可变值.. sqlfiddle:
declare @i int =0
select col1,@[email protected]+1 from align1
我得到了错误:
A SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations
即使我用LAG(),那么我怎么可以增加或SELECT语句有条件地复位变量。
所以我想在mysql中得到相同的结果在sql server 2012中。
在此先感谢您。