Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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_Tsql - Fatal编程技术网

Sql 具有多个列的分组依据

Sql 具有多个列的分组依据,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个表,它有以下列 我希望得到的结果列数相同,但账户代码重复次数不超过一次的运行余额总和 我试过这个问题 select AccountCode , 'All Companies' as divisionName , AcName , LF_AccountType , Sum(ISNULL(runningBalance,0)) as runningBalance from Table group by AccountCode , divisionName , AcName , LF_A

我有一个表,它有以下列

我希望得到的结果列数相同,但账户代码重复次数不超过一次的运行余额总和 我试过这个问题

select  AccountCode , 'All Companies' as divisionName , AcName , LF_AccountType , Sum(ISNULL(runningBalance,0)) as  runningBalance  from Table
group by AccountCode , divisionName , AcName , LF_AccountType 

不清楚你的问题是什么。但是,group by语句中的所有列必须位于查询的表中或从查询的表派生。因此,您不能按在组中使用分区名称。你不需要它。 因此,最直接的语法修正是:

select  AccountCode , 'All Companies' as divisionName , AcName , 
LF_AccountType , Sum(ISNULL(runningBalance,0)) as  runningBalance  
from Table
group by AccountCode, AcName , LF_AccountType
解决方案
因为您使用的是固定值,所以只需对其使用聚合函数并将其从
GROUP BY
子句中删除,就没有意义了。例如:

SELECT AccountCode  , AcName , LF_AccountType ,  
        MIN('All Companies') as divisionName, 
        SUM(ISNULL(runningBalance,0)) as  runningBalance  from Table
group by AccountCode ,  AcName , LF_AccountType 
权变措施 尝试将Windows函数与子查询一起使用:

SELECT * FROM (

    Select  AccountCode , 'All Companies' as divisionName , AcName , LF_AccountType , 
    Sum(ISNULL(runningBalance,0)) OVER (PARTITION BY LF_AccountType ) as  runningBalance  , 
    ROW_NUMBER() OVER(PARTITION BY LF_AccountType) as rn
    from Table

) AS T1 WHERE T1.rn = 1
或者将子查询与Group by一起使用

Select  'All Companies' as divisionName, *  From (


select  AccountCode , AcName , 
LF_AccountType , Sum(ISNULL(runningBalance,0)) as  runningBalance  
from Table
group by AccountCode, AcName , LF_AccountType

) T1

查询应该可以工作。到底出了什么问题?是否有可能
AccountCode
AcName
有不同的空格?也许可以尝试修剪该列?因为您使用的是固定值,所以只需对其使用聚合函数,并将其从GROUPBY子句中删除即可。看看我对答案的更新