获取SQL中的上一个记录列值

时间:2014-11-11 08:46:36

标签: mysql sql db2 record recordset

我有一个包含3列的表:日期,名称,工资

我想查询表并在结果集中添加另一个可以有2个值的计算列:' new'和'相同'。

分配值的规则是:按日期升序排序记录。如果当前记录的名称与前一记录的名称不同,则新列值将为“开始”#39;否则(如果它是相同的)它将是相同的'。

我该怎么做?是否有一个函数(像prevRow())?或者我必须制作一个"技巧"?

我如何在mysql和DB2中执行此操作?

3 个答案:

答案 0 :(得分:2)

取决于您使用的数据库,MS SQL具有滞后函数:http://msdn.microsoft.com/en-us/library/hh231256.aspx

有一个mysql hack,请查看这个问题:Simulate lag function in MySQL how to do lag operation in mysql

答案 1 :(得分:2)

似乎DB2(至少9.7之后的版本)支持LAG()窗口函数,因此这个查询应该可以工作(虽然我还没有能够测试它):

SELECT 
    date,
    name,
    salary
    CASE
      WHEN lag(name, 1) OVER (ORDER BY date ASC) = name THEN 'same' 
      ELSE 'start' 
    END AS calc_col
FROM your_table
ORDER BY date ASC

答案 2 :(得分:1)

你可以使用这样的查询

set @last_val = "";
select 
    if(@last_val = column,"same","start") as state,
    @last_val := colum as temp
 from table
 ;