Sql 为什么在执行此查询时会出现此错误?
我想显示当drcr 2为借方时,当drcr 1为贷方时,当ISOPENG为1且drcr为2时,金额为Opening借方;当ISOPENG为1且drcr为1时,金额为openingCreditSql 为什么在执行此查询时会出现此错误?,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
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
。您得到了什么错误?那么错误在哪里?