SQL SERVER GRUOUP BY 分组问题

我新建的一个视图,结构如图,想按照时间和姓名分组。将timehours 相加
clipboard.png

仅通过时间报错:

SELECT TimeItemFromDate,Name,Department,projectCode,ProjectName,SUM(TimeHours) FROM test GROUP BY TimeItemFromDate
SELECT TimeItemFromDate,Name,Department,projectCode,ProjectName,SUM(TimeHours) FROM test GROUP BY TimeItemFromDate
> Msg 8120, Level 16, State 1, Server WIN-N830FBLO8HK\TECHEXCEL, Procedure , Line 0
选择列表中的列 'test.Name' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
> [42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]选择列表中的列 'test.Name' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。 (8120)

> 时间: 0.014s

通过时间和名字,会报第三列。

SELECT TimeItemFromDate,Name,Department,projectCode,ProjectName,SUM(TimeHours) FROM test GROUP BY TimeItemFromDate,Name
SELECT TimeItemFromDate,Name,Department,projectCode,ProjectName,SUM(TimeHours) FROM test GROUP BY TimeItemFromDate,Name,Department
> Msg 8120, Level 16, State 1, Server WIN-N830FBLO8HK\TECHEXCEL, Procedure , Line 0
选择列表中的列 'test.projectCode' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
> [42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]选择列表中的列 'test.projectCode' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。 (8120)

> 时间: 0.017s

百度得到的Select指定的每一列都应该出现在Group By子句中,那我要输出同样的结构,应该怎么写?

阅读 2.1k
1 个回答

group by 的功能是按照某一列分组,分组后的数据结构变成 {key, value} 型,key 为 group by 的字段,value 为根据 key 分组后的集合。分组后的数据结构已经改变,不能和之前的结构保持一致。

举个例子:

var array = [
    {name:'张三', department:'公司1', projectCode:'code1'},
    {name:'李四', department:'公司1', projectCode:'code2'},
    {name:'张三', department:'公司2', projectCode:'code3'}
];

//根据 name 字段进行 group by
groupby(array, 'name'); 

// 输出结果
{
    张三:[
        {name:'张三', department:'公司1', projectCode:'code1'},
        {name:'张三', department:'公司2', projectCode:'code3'}
    ],
    李四:[
        {name:'李四', department:'公司1', projectCode:'code2'}
    ]
}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进