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

SQL Server - 0 に遭遇するとリセットされる累積合計

    SQL Server 2008 では、分析関数を使用できないため、非常に制限されています。以下は効率的ではありませんが、問題を解決します:

    with tg as (
          select t.*, g.grp
          from t cross apply
               (select count(*) as grp
                from t t2
                where t2.pk <= t.pk and t2.pk = 0
               ) g
         )
    select tg.*, p.running_price
    from tg cross apply
         (select sum(tg2.price) as running_price
          from tg tg2
          where tg2.grp = tg.grp and tg2.pk <= tg.pk
         ) p;
      

    残念ながら、SQL Server 2012 より前のバージョンでは、最も効率的なソリューションにはカーソルが含まれていた可能性があります。 SQL Server 2012+ では、次のことを行うだけです:

    select t.*,
           sum(price) over (partition by grp order by pk) as running_price
    from (select t.*,
                 sum(case when price = 0 then 1 else 0 end) over (order by pk) as grp
          from t
         ) t;
      


    1. DataTableのOracleDataAdapterを使用して、レコードを更新し、Oracleテーブルに挿入します

    2. 警告:mysql_fetch_array():指定された引数は有効なMySQL結果リソースではありません

    3. Rails4を使用したJSONデータ型のPostgres演算子

    4. sqlalchemy.exc.NoSuchModuleError:プラグインを読み込めません:sqlalchemy.dialects:postgres