MS SQLを使用してあるシステムから別のシステムにデータを移動しようとしています。最初のシステムでは、請求書の税要素は別の行にあり、もう1つはネットと税と同じ行に割り当てられています。SQLテーブルの純請求書にVAT値を分割する
請求書に複数の明細がある場合は、税金が各明細行に割り当てる必要があることを意味します。
私はパーティションを使うのが答えだと思っていますが、私はそれに何か間違っていると思います。私がしようとしています
問題のコードは次のとおりです。
, CASE
WHEN a.ACTINDX = 11
THEN 0
ELSE (a.DEBITAMT - a.CRDTAMNT)
END AS [Net Amount]
, CASE
WHEN a.ACTINDX = 11 THEN 0
ELSE SUM(a.DEBITAMT-a.CRDTAMNT) OVER (PARTITION BY a.ORCTRNUM)
END AS [Tax Amount]
例データ:
ACTINDX DEBITAMT CRDTAMNT ORCTRNUM PK
11 40.00000 0.00000 V007502 74058
16 -240.00000 0.00000 V007502 74059
1708 50.00000 0.00000 V007502 74060
1708 50.00000 0.00000 V007502 74061
1736 50.00000 0.00000 V007502 74062
1781 50.00000 0.00000 V007502 74063
は、のように見える終わる必要があります。
ACTINDX DEBITAMT CRDTAMNT ORCTRNUM PK
16 -240.00000 00.00000 V007502 74059
1708 50.00000 10.00000 V007502 74060
1708 50.00000 10.00000 V007502 74061
1736 50.00000 10.00000 V007502 74062
1781 50.00000 10.00000 V007502 74063
40.0のトップライン税値がインボイスの4つの行に比例して分割されるので、この値は消えます。
私は解決策としてパーティションに向かうさまざまなWebサイト(Baker's Dozen、Stackの(e、g、13290775)、Microsoftなど)を見てきました。 Bakers Dozenが最も近いと思われますが(http://www.codemag.com/Article/1112061)、ヒント1にコーディングを追加する方法は不明です。
私は2つのクエリを書いても構いません.1つはタックスラインなしのすべてのデータを抽出し、もう1つは税ラインだけを抽出してから、その方法で請求書に税金を割り当てますが、 。
テーブル全体をExcelにドロップして、そのソフトウェアで実行するかどうかは、比較的簡単なので検討しています。
請求書のすべての要素に税率を適用することはできません。一部の国では、税金や減税が行われない場合があります。
本当にありがとうございました。ウィンドウ関数の助けを借りて
はあなたの提案、ジョンいただきありがとうございます。私は明日これを試し、私のポストを更新します。 – user3398652
私は右に見える – SqlZim
@SqlZim見てみましょう。公差によって可能な精度/丸めの問題; –