【问题】
有一组数据,
date_1 count_1
2014-12-01 1
2014-12-02 3
2014-12-03 5
2014-12-04 3
2014-12-05 2
2014-12-06 1
2015-01-01 5
2015-01-02 4
2015-01-03 3
怎么写SQL判断出,数据是上升还是下降状态?
希望结果
date_1 count_1 status_1
2014-12-01 1 上升
2014-12-02 3 上升
2014-12-03 5 上升
2014-12-04 3 下降
2014-12-05 2 下降
2014-12-06 1 下降
2015-01-01 5 上升
2015-01-02 4 下降
2015-01-03 3 下降
谢谢!
【回答】
在MSSQL中可以先通过窗口函数和上一条记录比较,可以这样写:
select date_1,count_1, case when count_1 > lag(count_1) over ( order by date_1 ) then '上升 ' else ' 下降 ' end 'status_1' from tb
但 SQL SERVER 的某些版本不支持 lag 函数,这时就得用造序号后自连接的方法,造序号时可以不用窗口函数,用个子查询计行号即可,适