【问题标题】:Cannot call method in decimal SQL Server error无法在十进制 SQL Server 错误中调用方法
【发布时间】:2016-10-24 10:09:52
【问题描述】:

这是我的左连接查询,我正在自动开发贷记借记和余额。

也许我缺乏专栏。我使用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)=@voucher*/
    ORDER BY 
        gLedeger.gl_date
END

【问题讨论】:

  • 确保您的代码被格式化为代码以提高易读性
  • 您的查询中有聚合函数但未使用 GROUP by 子句
  • 我只是编码的初学者,你能告诉我如何在上面的查询中使用组吗????

标签: sql sql-server-2012


【解决方案1】:

我得到这个解决方案如下:-

ALTER 程序 [dbo].[fulltest] ( @gl_acid 整数, @userid 整数 ) 作为 开始

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, 当 gLedeger.gl_drcr > 0 然后 abs(gLedeger.gl_drcr) else 0.00 以借方结束的情况下, gLedeger.GL_DRCR FROM gLedeger LEFT JOIN master ON gLedeger.GL_ACID = master.PK_ID 离开加入注册 r on master.userId=@userid 在哪里 gLedeger.GL_ACID = @gl_acid /和 LEFT(gLedeger.gl_voucher,2)=@voucher/

ORDER BY gLedeger.gl_date

end

【讨论】:

    【解决方案2】:
    SUM(COALESCE(gLedeger.gl_drcr.credit, 0) - COALESCE(gLedeger.gl_drcr.debit, 0)) AS Balance
    

    你不能在 sql 中的字段名后使用点。因为选择字段的格式是

    SERVER.DATABASE.SCHEMA.FIELDNAME

    【讨论】:

      猜你喜欢
      • 2020-01-03
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多