2017-07-09 8 views
-1

Oracle PL/SQLでこれを行う方法を理解しようとしています。別の列の値に基づいてグループ化IDを作成する

特定の値が別の列に表示されたときに基づいてレコードをグループ化する列に値を作成したいとします。たとえば、このイメージの最初の列の値に基づいて、 'Group'列に値を作成したいとします。 'red'の値は、レコードのグループの最初の値です。 「赤」以外の後続のカラー値は、同じグループに属します。次の「赤」値は、新しい「グループ」値を作成する必要があることを意味します。

[1]

「グループ」列の値を作成する方法上の任意のアイデア?前もって感謝します。

+0

の合計を取得するにはBETWEEN句ROWSを使用することができます絵にBUコードとしてフォーマットされたテキストとしてデータを供給いけないしてください – miracle173

答えて

1

SQLテーブルは、の順不同であるを表します。ですから、注文を指定する列があるとします。私はちょうどそれをidと呼ぶでしょう。

grpの列は、単純にすべての行までの赤の合計です。これは簡単です:

select t.*, 
     sum(case when colors = 'red' then 1 else 0 end) over (order by id) as grp 
from t; 
+0

はい、希望のレコードの順序を維持するためにSQLローダーでrecnumを使用しています。 この解決策も同様に機能します。このゴードン・Lのお手伝いをありがとう! – tstad9i

0

現在のROWまで「赤」色

  SELECT a.color, 
      SUM(DECODE(color,'red',1,0)) OVER (ORDER BY ROWNUM 
       ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) rn 
      FROM colors a; 
+0

今日はこの最初のことを試しましたが、結果はまさに私が探していたものです。ありがとうKaushik N.! – tstad9i

関連する問題