我在这里遇到了一些麻烦。我在表格中有以下数据。
(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
但是我无法连接现有的行。在我的例子中,如果Input是YELLOW而Output是YELLOw,我得到Status字段YELLOW-YELLOW的第一行。但是在下一个记录中,如果我输入为RED而输出为绿色,在这种情况下,我应该有状态黄色,红色 - 黄色,绿色。
基本上我需要找到一种方法来获取Input字段和Output字段的previus记录,并将其添加到下一条记录。
答案 0 :(得分: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。
祝你好运。