-1
次のようなシナリオを考えています。 here月ごとのパーティションとのSQL Serverの実行残高
を示すよう
が、私はこれを正常に実施している私は、ユーザーが毎年キャップがそれに応じて批准する必要が今年中に推進してしまった場合のために、問題につまずいてきました。
これらの結果は次のとおりです。 9月に
SELECT *,
RemainingBalance = AnnualCapping - Sum(amount)
OVER (
partition BY userid, year, annualcapping
ORDER BY userid, year, month)
FROM exampleTx
WHERE userid = 1
AND year = 2015
データ
userId year month monthname name surname annualCapping amount RemainingBalance
1 2015 1 January Joe Black 500,00 40,00 460,00
1 2015 2 February Joe Black 500,00 40,00 420,00
1 2015 3 March Joe Black 500,00 40,00 380,00
1 2015 4 April Joe Black 500,00 40,00 340,00
1 2015 5 May Joe Black 500,00 40,00 300,00
1 2015 6 June Joe Black 500,00 40,00 260,00
1 2015 7 July Joe Black 500,00 40,00 220,00
1 2015 8 August Joe Black 500,00 40,00 180,00
1 2015 9 September Joe Black 1000,00 40,00 **960,00**
1 2015 10 October Joe Black 1000,00 40,00 **920,00**
1 2015 11 November Joe Black 1000,00 40,00 **880,00**
1 2015 12 December Joe Black 1000,00 40,00 **840,00**
を(SQL Serverの2012を使用して)毎月の手当は、今年の残りに比例している必要があります。
4 months = 1000 * 4/12 = 333.33
残り残量は293.33, 253.33, 213.33,173.33
です。
年次の上限フィールドを変更せずにこれを達成できますか。すなわち、毎年のキャッピングが333.33
に縮小された場合、eはよりシンプルになりましたが、これは私が持っているデータです。
前月のキャッピングが変更された場合は、プロモーションが行われたことを示します。それは任意の月に発生する可能性があります。したがって、新しいキャッピングは比例する必要があります。
ユーザーの昇格の仕組みをどのように特定しますか?それは別のテーブルの情報ですか?すべてのユーザーで同じルールですか? –
この例では、プロモーションに信号を送るために、年間キャッピングが追加されています。実際には別のテーブルから来ています。共有されたSQLファイルには、使用できる簡単な例が含まれています。同じユーザーのための同じルール、 – NotForFun
それは常に最後の4ヶ月比例calcを持っていますか? –