sql >> データベース >  >> RDS >> Oracle

Oracle / Sybase SQL-以前のレコード(単純なLAGではない)に基づいて値を取得します

    これを行う1つの方法は、ネストされたランキング関数を使用することです。まず、1つの値を取得するすべてのものに定数値を割り当てます(max() overを使用) )次に、これをパーティションとして使用します。

    select t.Invoice_Id, t.Invoice_Line, t.Kit_Flag, t.Part_Number,
           max(KitPart) over (partition by invoice_id, KitNum) as Parent_Part
    from (select t.*,
                 sum(isKit) over (partition by InvoiceId order by InvoiceLine) as KitNum
          from (select t.Invoice_Id, t.Invoice_Line, t.Kit_Flag, t.Part_Number,
                       (case when Kit_Flag = 'K' then 1 else 0 end) as IsKit,
                       (case when Kit_Flag = 'K' then Part_Number end) as KitPart
                from Invoice_Data t
               ) t
         ) t
    



    1. MySQLにインデックスによるFIND_IN_SETはありますか?

    2. インストーラーリソース(wxsファイル、dmg-script、icon)をどこに配置する必要があり、自己完結型アプリをデプロイするときにMavenantrunを構成する方法

    3. 非正規化テキストファイル1から正規化テーブルを作成するにはどうすればよいですか?

    4. MySQLワイルドカードのエスケープ