0

我在这里遇到了一些真正的麻烦。我在表格中有以下数据。

(Input)  (Output) (Status)
YELLOW   YELLOW   YELLO-YELLOW     - because there is no previous row. Please watch the next
Red       GREEN   YELLOW,RED-YELLOW-GREEN

..基本上我需要一个存储过程或一种方法来从表记录中获取上一行并将其添加到下一行。最近几天我一直在努力做到这一点,没有任何运气。请帮忙。谢谢你。

到目前为止我有这个:

select input, output, concat(input,output) as status from Status

但是我无法连接现有的行。在我的示例中,如果输入为黄色且输出为黄色,我将获得状态字段 YELLOW-YELLOW 的第一行。但是在下一条记录中,如果我有红色作为输入,绿色作为输出,在这种情况下,我应该有黄色、红色-黄色、绿色状态。

基本上我需要找到一种方法来获取输入字段和输出字段的先前记录并将其添加到下一条记录。

4

1 回答 1

0

老实说,不是 100% 确定你在寻找什么问题。但是,如果我理解正确,您想从上一行获取输入/输出并将其添加到当前行的状态中吗?

根据您的 RDBMS,这样的事情应该可以帮助您入门——这是特定于 SQL Server 的:

WITH cte AS
(
   SELECT *,
      ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS row
   FROM yourTable
)
SELECT 
  t1.input, 
  t1.output, 
  CASE 
    WHEN t2.input IS NULL
      THEN t1.input + '-' + t1.output
    ELSE 
      t2.input + ',' + t1.input + '-' + t2.output + ',' + t1.output
  END status
FROM cte t1
  LEFT JOIN cte t2 ON t1.row = t2.row+1

这是用于测试的SQL Fiddle 。

祝你好运。

于 2013-02-01T04:28:12.557 回答