2016-10-24 25 views
1

ここでは左結合によるクエリがあり、私は自動的にクレジットデビットと残高を作成しています。小数点以下のSQL Serverエラーでメソッドを呼び出せません

おそらく私は列に欠けています。私はgl_drcrをメインの列として使用し、クエリでクレジットとデビットに分割しましたが、残高の価値を得ることができません。私は量の値を格納することができる量の欄も持っています。

このクエリで自分の過ちがどこにあるのか分かりやすくすることができますか?

私のストアドプロシージャは、次のようになります。

ALTER procedure [dbo].[sp_getDataML] 
    (@gl_acid int, @userid int) 
AS 
BEGIN 
    SELECT 
     ROW_NUMBER() OVER (ORDER BY gLedeger.PK_id) AS sno, 
     CASE 
      WHEN master.ma_accname IS NULL THEN '' 
      ELSE ma_accname 
     END AS AccName, 
     gLedeger.gl_date AS date, gLedeger.gl_narration AS Narration, 
     gLedeger.gl_drcr as DRCR, 
     CASE 
      WHEN gLedeger.gl_drcr > 0 THEN ABS(gLedeger.gl_drcr) 
      ELSE 0.00 
     END AS debit, 
     CASE 
      WHEN gLedeger.gl_drcr < 0 THEN ABS(gLedeger.gl_drcr) 
      ELSE 0.00 
     END AS credit, 
     SUM(COALESCE(gLedeger.gl_drcr.credit, 0) - COALESCE(gLedeger.gl_drcr.debit, 0)) AS Balance 
    FROM 
     gLedeger 
    LEFT JOIN 
     master ON gLedeger.GL_ACID = master.PK_ID 
    LEFT JOIN 
     registration r ON master.userId = @userid 
    WHERE 
     gLedeger.GL_ACID = @gl_acid 
     /*and LEFT(gLedeger.gl_voucher,2)[email protected]*/ 
    ORDER BY 
     gLedeger.gl_date 
END 
+0

コードが読みやすくするためのコードとしてフォーマットされていることを確認してください –

+0

クエリに集計関数がありますが、GROUP BY節では使用されていません –

+0

私はちょうど上記のクエリでグループを使用できますか? ?? –

答えて

0

次のように私はこの解決策を得た: - 。

ALTER手順[DBO] [fulltest] ( @gl_acid int型、 @userid int型master.ma_accnameである場合 ) としてSNOとして、ケースをOVER

SELECT ROW_NUMBER()gLedeger.PK_idによって(順序)を始めますnull then '' else ma_accname AccNameとして終了、gLedeger.gl_dateをナレーション、gLedeger.gl_narrationをナレーション、gLedeger.gl_drcrをDRCR、 gLedeger.gl_drcr> 0のときにabs(gLedeger.gl_drcr)以外の場合0.00デビットとして終了、 gLedeger左からバランス
が gLedegerのマスターを結合としてgLedeger.GL_DRCR < 0は、その後(前gledeger.pk_IDのROWS BY ORDERは無制限)以上のクレジットとして(gLedeger.gl_drcr)他の0.00終わり、 SUM(gLedeger.gl_drcr)のABSケース.GL_ACID = master.PK_IDは[email protected] gLedeger.GL_ACID = @gl_acid /とLEFT(gLedeger.gl_voucher、2)= @バウチャー/

に登録Rに参加左
ORDER BY gLedeger.gl_date 

end 
関連する問題