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

テーブルに新しいエントリが作成された場合の減算を伴う SQL 合計

    SQL Fiddle に基づいて、新しい試みを行いました。これは正しいと思いますが、John には 100 ではなく 81 が返されます:

    <プレ>; with LP (CustomerId, Name, UserActions, TotalPoints) as ( SELECT C.CustomerId, C.Name, sum(case when P.LoyaltyPointsId = 4 then isnull(R.RedeemCount, 0) else 1 end), sum(P.Points * case when P.LoyaltyPointsId = 4 then isnull(R.RedeemAmount,0) else 1 end) from CustomerTable C join LoyaltyDetailsTable D on D.CustomerId = C.CustomerId join LoyaltyPointTable P on P.LoyaltyPointsId = D.LoyaltyPointsId outer apply ( select sum(Amount) as RedeemAmount, count(Amount) as RedeemCount from RedeemPointsTable R where R.CustomerId = C.CustomerId ) R group by C.CustomerId, C.Name ), PP (CustomerId, Pricepoints) as ( select C.CustomerId, sum(P.Pricepoints) from PriceTable P join PriceClaimTable C on P.PriceClaimId = C.PriceClaimId group by C.CustomerId ) select LP.CustomerId, LP.Name, LP.UserActions, LP.TotalPoints - isnull(PP.Pricepoints, 0) as Points from LP left outer join PP on LP.CustomerId = PP.CustomerId order by LP.CustomerId として

    顧客は常にロイヤルティ テーブルから検出されますが、償還テーブルや価格テーブルからは必要ないという前提があります

    このバージョンの SQL Fiddle:http://sqlfiddle.com/#!3/5e379/8




    1. SQLLIKE句でのSqlParameterの使用が機能しない

    2. 1を表示するcURLとPHP

    3. PHPとAjaxを使用してフォームデータをMySQLデータベーステーブルに挿入するにはどうすればよいですか?

    4. Entity Framework からの SQL ビット列の更新