Sql server 我怎样才能得到机会+;借方-贷方=余额,以ms sql为单位

Sql server 我怎样才能得到机会+;借方-贷方=余额,以ms sql为单位,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我怎样才能得到平衡 这里是我想做的,OppennigBalance+借方-贷方=余额 SELECT GL.AccountId, CA.Code, CA.AccountName, SUM(CASE GL.DrCr WHEN 2 THEN Amount END) AS Debit, SUM(CASE GL.DrCr WHEN 1 THEN Amount END) AS Credit, Sum(CA.OpeningBalance + Debit - Credit) as Balance FROM G

我怎样才能得到平衡

这里是我想做的,OppennigBalance+借方-贷方=余额

SELECT
GL.AccountId,
CA.Code,
CA.AccountName,
SUM(CASE GL.DrCr WHEN 2 THEN Amount END) AS Debit, 
SUM(CASE GL.DrCr WHEN 1 THEN Amount END) AS Credit,
Sum(CA.OpeningBalance + Debit - Credit) as Balance
FROM GeneralLedgerLine GL 
Join ClientAccount CA on CA.Id = GL.AccountId
Join GenralLedgerHeader GH on GL.GeneralLedgerHeaderId = GH.Id
GROUP BY
    GL.AccountId, CA.Code, CA.AccountName
这是我尝试的查询,但它显示以下错误消息:

消息207,16级,状态1,第19行无效列名“借方”。Msg 207,16级,状态1,第19行无效列名“信用”


更改
余额
,如下所示

Sum(CA.OpeningBalance + CASE WHEN GL.DrCr = 2 THEN Amount ELSE -Amount END) as Balance

注意:您不能在同一级别上引用别名

更改
余额
,如下所示

Sum(CA.OpeningBalance + CASE WHEN GL.DrCr = 2 THEN Amount ELSE -Amount END) as Balance

注意:您不能在同一级别上引用别名,请尝试以下操作之一:

SELECT
GL.AccountId,
CA.Code,
CA.AccountName,
SUM(CASE GL.DrCr WHEN 2 THEN Amount END) AS Debit, 
SUM(CASE GL.DrCr WHEN 1 THEN Amount END) AS Credit,
Sum(CA.OpeningBalance + CASE GL.DrCr WHEN 2 THEN Amount END - CASE GL.DrCr WHEN 1 THEN Amount END) as Balance
FROM GeneralLedgerLine GL 
Join ClientAccount CA on CA.Id = GL.AccountId
Join GenralLedgerHeader GH on GL.GeneralLedgerHeaderId = GH.Id
GROUP BY
    GL.AccountId, CA.Code, CA.AccountName

出现错误的原因是,您正在定义列的名称,并试图在同一操作中引用它,这在SQL Server 2017中是不可能的。如果将引用转换为计算值(显示在顶部代码块中),或者在外部查询中对计算列进行计算(显示在底部代码块中),则不应出现问题


编辑:对不起,昨天在医生办公室等待时,我在电话里很快就这么做了。查询已更正。

请尝试以下操作之一:

SELECT
GL.AccountId,
CA.Code,
CA.AccountName,
SUM(CASE GL.DrCr WHEN 2 THEN Amount END) AS Debit, 
SUM(CASE GL.DrCr WHEN 1 THEN Amount END) AS Credit,
Sum(CA.OpeningBalance + CASE GL.DrCr WHEN 2 THEN Amount END - CASE GL.DrCr WHEN 1 THEN Amount END) as Balance
FROM GeneralLedgerLine GL 
Join ClientAccount CA on CA.Id = GL.AccountId
Join GenralLedgerHeader GH on GL.GeneralLedgerHeaderId = GH.Id
GROUP BY
    GL.AccountId, CA.Code, CA.AccountName

出现错误的原因是,您正在定义列的名称,并试图在同一操作中引用它,这在SQL Server 2017中是不可能的。如果将引用转换为计算值(显示在顶部代码块中),或者在外部查询中对计算列进行计算(显示在底部代码块中),则不应出现问题


编辑:对不起,昨天在医生办公室等待时,我在电话里很快就这么做了。查询已更正。

错误消息是什么?您不能在同一查询中通过别名引用另一列。错误消息是什么?您不能在同一查询中通过别名引用另一列。消息130,级别15,状态1,第9行无法对包含聚合或子查询的表达式执行聚合函数。@Chad在第一个查询中显示此错误消息MSG 8120,级别16,状态1,第16行列“ClientAccount.OpeningBalance”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。@Chad Estes,最后一个显示此错误的列Msg 130,级别15,状态1,第9行无法对包含聚合或子查询的表达式执行聚合函数。@Chad在第一个查询中显示此错误消息MSG 8120,级别16,状态1,第16行列“ClientAccount.OpeningBalance”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。@Chad Estes,最后一个显示此错误的列