我正在使用 C# 从 MSSSQL 数据库中提取一些数据,该数据库跟踪员工及其工作时间。我只是使用常规的简单选择语句来提取相关数据。我希望能够总结数据(不确定我是否使用了正确的词)。
例如,下图中的黑色文本是我目前拥有的,但我希望能够以某种方式添加红色文本。这样做的最佳方法是什么?也许拆分成更小的查询?
我正在使用 C# 从 MSSSQL 数据库中提取一些数据,该数据库跟踪员工及其工作时间。我只是使用常规的简单选择语句来提取相关数据。我希望能够总结数据(不确定我是否使用了正确的词)。
例如,下图中的黑色文本是我目前拥有的,但我希望能够以某种方式添加红色文本。这样做的最佳方法是什么?也许拆分成更小的查询?
对于 SQL Server 2008+,您可以使用GROUPIN SETS
. 在你的例子中,试试这个:
SELECT SalesPersonCode,
SalesPersonName,
[Date],
SUM(HoursWorked) HoursWorked
FROM YourTable
GROUP BY GROUPING SETS( (SalesPersonCode, SalesPersonName, [Date]),
(SalesPersonCode),())
要获得销售人员的总工作时间:
SELECT SalesPersonCode, SUM(HoursWorked) AS [HoursWorked]
FROM table
GROUP BY SalesPersonCode
应该返回:
001 26 002 24
要获得总工作时间:
SELECT SUM(HoursWorked) AS [HoursWorked]
FROM table
应该返回:
50
以下查询将在一个查询中为您获取除总计之外的所有数据:
select t1.salespersoncode,
t1.salespersonname,
t1.date,
t1.hoursworked,
x.TotalHours
from yourTable t1
inner join
(
select salespersoncode,
sum(hoursworked) TotalHours
from yourTable
group by salespersoncode
) x
on t1.salespersoncode = x.salespersoncode
如果您想要所有小时的总计:
select sum(hoursworked) GrandTotal
from yourTable