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 の場合、ステータス フィールド 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 に答える