場合

2017-02-20 2 views
0

の違いを計算するためにどのように私は私がデビットカードやクレジット場合

間の差を計算したいこの

CASE WHEN j.DocTypeID=0 AND CreditOrDebit = 'd' THEN SecDebit END AS 'debit', 
CASE WHEN j.DocTypeID=0 AND CreditOrDebit = 'c' THEN SecCredit END AS 'credit', 

のようなものを持っています価値、このステートメントの何が間違っているのか誰にでもここで何をすべきかアドバイスすることができます。 NULL上の任意の演算を実行する

+0

使用列の別名のための二重引用符を、例えば''デビット ''。 – jarlh

答えて

1

はNULLを返します。あなたはクレジットカードまたはデビットカードを区別するために1列のみ(CreditOrDebit)を持っている場合は、2つの列を持っている必要はありません

Bal=CASE WHEN j.DocTypeID=0 AND CreditOrDebit = 'd' THEN SecDebit ELSE 0 END - 
    CASE WHEN j.DocTypeID=0 AND CreditOrDebit = 'c' THEN SecCredit ELSE 0 END, 
+0

良いキャッチが、私は理解を助けるために、私は明確な形でそれを書いているすべての –

+0

で任意のNULLを防ぐために、 'だけでなく(0、SecDebit)' COALESCEを追加しているだろう.... –

-1
Bal=(CASE WHEN j.DocTypeID=0 AND CreditOrDebit = 'd' THEN SecDebit ELSE 0 END - 
CASE WHEN j.DocTypeID=0 AND CreditOrDebit = 'c' THEN SecCredit ELSE 0 END) 
+0

私は説明をdownvote好き。 –

+0

私の答えは何が間違っていますか? downvoteの理由を教えてください? –

0

secDebitと次の場合にNULLではなく、それぞれの場合の戻り0ない条件一致を作りますsecCredit。だから私は、1つの列secDebitorCreditがあると仮定します。この下のクエリを考慮すると、デビットクレジットの最終的な差が与えられます。

SELECT SUM(ISNULL(CASE WHEN j.DocTypeID=0 AND CreditOrDebit = 'd' THEN secDebitorCredit END , 0) - 
ISNULL(CASE WHEN j.DocTypeID=0 AND CreditOrDebit = 'c' THEN secDebitorCredit END, 0))AS 'Diff'