Sql 为什么在执行此查询时会出现此错误?

Sql 为什么在执行此查询时会出现此错误?,sql,sql-server,Sql,Sql Server,我想显示当drcr 2为借方时,当drcr 1为贷方时,当ISOPENG为1且drcr为2时,金额为Opening借方;当ISOPENG为1且drcr为1时,金额为openingCredit SELECT GL.AccountId,Ca.Code as Code, CA.AccountName as AccountName, SUM(CASE GL.DrCr WHEN 2 THEN GL.Amount END) AS Debit, SUM(CASE GL.D

我想显示当drcr 2为借方时,当drcr 1为贷方时,当ISOPENG为1且drcr为2时,金额为Opening借方;当ISOPENG为1且drcr为1时,金额为openingCredit

SELECT   
    GL.AccountId,Ca.Code as Code,
    CA.AccountName as AccountName,
    SUM(CASE GL.DrCr WHEN 2 THEN GL.Amount END) AS Debit,
    SUM(CASE GL.DrCr WHEN 1 THEN GL.Amount END) AS Credit,
    SUM(CASE GL.IsOpening WHEN 1 THEN Case GL.DrCr When 2 Then  GL.Amount END) AS OpeningDebit,
    SUM(CASE GL.IsOpening WHEN 1 THEN Case GL.DrCr When 1 Then  GL.Amount END) AS OpeningCredit
FROM 
    GeneralLedgerLine GL 
JOIN
    ClientAccount CA On GL.AccountId = CA.Id 
WHERE
    CA.ClientId = 1
GROUP BY 
    GL.AccountId, CA.Code, CA.AccountName

您可以在下面进行尝试-您在表达式时错过了外壳的结尾

SELECT   GL.AccountId,Ca.Code as Code,CA.AccountName as AccountName,
         SUM(CASE GL.DrCr WHEN 2 THEN GL.Amount END) AS Debit,
         SUM(CASE GL.DrCr WHEN 1 THEN GL.Amount END) AS Credit,
         SUM(CASE GL.IsOpening WHEN 1 THEN Case GL.DrCr When 2 Then  GL.Amount END END) AS OprningDebit,
         SUM(CASE GL.IsOpening WHEN 1 THEN Case GL.DrCr When 1 Then  GL.Amount END END) AS OpeningCredit
FROM     GeneralLedgerLine GL Join ClientAccount CA On GL.AccountId = CA.Id Where CA.ClientId = 1
GROUP BY GL.AccountId,CA.Code,CA.AccountName
或者你可以像下面这样做-

SELECT   GL.AccountId,Ca.Code as Code,CA.AccountName as AccountName,
         SUM(CASE GL.DrCr WHEN 2 THEN GL.Amount END) AS Debit,
         SUM(CASE GL.DrCr WHEN 1 THEN GL.Amount END) AS Credit,
         SUM(CASE GL.IsOpening WHEN 1 and GL.DrCr =2 Then  GL.Amount END) AS OprningDebit,
         SUM(CASE GL.IsOpening WHEN 1 and GL.DrCr=1 Then  GL.Amount END) AS OpeningCredit
FROM     GeneralLedgerLine GL Join ClientAccount CA On GL.AccountId = CA.Id Where CA.ClientId = 1
GROUP BY GL.AccountId,CA.Code,CA.AccountName

在你的情况下,你可能会犯错误

SELECT   
  GL.AccountId,
  Ca.Code as Code,
  CA.AccountName as AccountName,
  SUM(CASE WHEN GL.DrCr = 2 THEN GL.Amount ELSE 0 END) AS Debit,
  SUM(CASE WHEN GL.DrCr = 1 THEN GL.Amount ELSE 0 END) AS Credit,
  SUM(CASE WHEN GL.IsOpening = 1 AND GL.DrCr = 2 THEN GL.Amount ELSE 0 END) AS OpeningDebit,
  SUM(CASE WHEN GL.IsOpening = 1 AND GL.DrCr = 1 THEN GL.Amount ELSE 0 END) AS OpeningCredit
FROM 
  GeneralLedgerLine GL 
  INNER JOIN ClientAccount CA On GL.AccountId = CA.Id 
Where 
  CA.ClientId = 1
GROUP BY 
  GL.AccountId,
  CA.Code,
  CA.AccountName

当条件不满足时,您应该处理您的
案例
条件,否则它将变为
Null

您得到了什么错误?那么错误在哪里?