Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 参考表格的汇总结果_Sql_Sql Server - Fatal编程技术网

Sql 参考表格的汇总结果

Sql 参考表格的汇总结果,sql,sql-server,Sql,Sql Server,我有一些数据库表。一个表调用GL,并有GL\u id、GL\u type\u id等列。 另一个是总账交易表,有总账id、交易金额等。我想得到交易金额的总账类型id的汇总。我为此写了一个查询 SELECT GL.CHAT_ACC_ID,GL.CHAT_ACC_NAME,GL.GL_TYPE_ID,GL.GL_TYPE_NAME, SUM(CASE WHEN tr.CR_DR = 'CR' AND TR.BRANCH_CODE=1000 AND TR.TRAN_DATE<'20

我有一些数据库表。一个表调用GL,并有GL\u id、GL\u type\u id等列。 另一个是总账交易表,有总账id、交易金额等。我想得到交易金额的总账类型id的汇总。我为此写了一个查询

SELECT GL.CHAT_ACC_ID,GL.CHAT_ACC_NAME,GL.GL_TYPE_ID,GL.GL_TYPE_NAME,
       SUM(CASE WHEN tr.CR_DR = 'CR' AND TR.BRANCH_CODE=1000 AND TR.TRAN_DATE<'2000-01-01' THEN TR.GL_TRN_AMT ELSE 0
           END) AS CR_BEFORE,
       SUM(CASE WHEN tr.CR_DR='DR' AND TR.BRANCH_CODE=1000 AND TR.TRAN_DATE<'2000-01-01'  THEN TR.GL_TRN_AMT ELSE 0
           END) AS DR_BEFORE,
           SUM(CASE WHEN tr.CR_DR = 'CR' AND TR.BRANCH_CODE=1000 AND TR.TRAN_DATE BETWEEN '2000-01-01' AND '2010-01-01'  THEN TR.GL_TRN_AMT ELSE 0
           END) AS CR_BETWEEN,
           SUM(CASE WHEN tr.CR_DR = 'DR' AND TR.BRANCH_CODE=1000 AND TR.TRAN_DATE BETWEEN '2000-01-01' AND '2010-01-01'  THEN TR.GL_TRN_AMT ELSE 0
           END) AS DR_BETWEEN
FROM [COREBANKER1].[dbo].[GL_MAIN] as GL  
    LEFT JOIN [COREBANKER1].[dbo].[GL_DAILY_TRN] AS TR ON GL.GL_ID = TR.GL_CODE      
    GROUP BY GL.CHAT_ACC_ID,GL.CHAT_ACC_NAME,GL.GL_TYPE_ID,GL.GL_TYPE_NAME
    ORDER BY GL.GL_ID  
选择总账聊天账户ID、总账聊天账户名称、总账类型ID、总账类型名称,

SUM(当tr.CR\u DR='CR'和tr.BRANCH\u CODE=1000和tr.TRAN\u DATE时,我认为您只需要在select中添加以下语句

Sum(TR.GL_TRN_AMT) over() as TotalSum

我找到了解决办法……:D

SELECT CG.CHART_ACC_ID,CG.CHART_ACC_NAME,CG.GL_TYPE_ID,CG.GL_TYPE_NAME,
       SUM(CASE WHEN tr.CR_DR = 'CR' AND TR.BRANCH_CODE=1000 AND TR.TRAN_DATE<'2000-01-01' AND CG.CHART_ACC_ID=GL.CHAT_ACC_ID AND TR.GL_CODE=GL.GL_ID  THEN TR.GL_TRN_AMT ELSE 0
           END) AS CR_BEFORE,
       SUM(CASE WHEN tr.CR_DR='DR' AND TR.BRANCH_CODE=1000 AND TR.TRAN_DATE<'2000-01-01' AND CG.CHART_ACC_ID=GL.CHAT_ACC_ID AND TR.GL_CODE=GL.GL_ID THEN TR.GL_TRN_AMT ELSE 0
           END) AS DR_BEFORE,
           SUM(CASE WHEN tr.CR_DR = 'CR' AND TR.BRANCH_CODE=1000 AND TR.TRAN_DATE BETWEEN '2000-01-01' AND '2010-01-01' AND CG.CHART_ACC_ID=GL.CHAT_ACC_ID AND TR.GL_CODE=GL.GL_ID THEN TR.GL_TRN_AMT ELSE 0
           END) AS CR_BETWEEN,
           SUM(CASE WHEN tr.CR_DR = 'DR' AND TR.BRANCH_CODE=1000 AND TR.TRAN_DATE BETWEEN '2000-01-01' AND '2010-01-01' AND CG.CHART_ACC_ID=GL.CHAT_ACC_ID AND TR.GL_CODE=GL.GL_ID  THEN TR.GL_TRN_AMT ELSE 0
           END) AS DR_BETWEEN
FROM[COREBANKER1].[dbo].[GL_DAILY_TRN] AS TR, [COREBANKER1].[dbo].[GL_MAIN] as GL full JOIN  [COREBANKER1].[dbo].GL_CHART_ACC AS CG
     ON GL.CHAT_ACC_ID=CG.CHART_ACC_ID      
    GROUP BY CG.CHART_ACC_ID,CG.CHART_ACC_NAME,CG.GL_TYPE_ID,CG.GL_TYPE_NAME
    ORDER BY CG.CHART_ACC_ID 
选择CG.CHART\u ACC\u ID、CG.CHART\u ACC\u NAME、CG.GL\u TYPE\u ID、CG.GL\u TYPE\u NAME、,

SUM(当tr.CR_DR='CR'和tr.BRANCH_CODE=1000以及tr.TRAN_DATEsummey?summey?summy时的情况)让我提出一些建议:不要忽略拼写检查器提供的红色下划线。好的,谢谢。我会更正。如果可能,请提供示例输入和预期输出。