C# SQL汇总数据

C# SQL汇总数据,c#,sql,sql-server,C#,Sql,Sql Server,我正在使用C#从MSSQL数据库中提取一些数据,它跟踪员工及其工作时间。我只是使用一个常规的简单select语句来提取相关数据。我希望能够总结数据(不确定是否使用了正确的单词) 例如,下图中的黑色文本就是我目前拥有的文本,但我希望能够以某种方式添加红色文本。这样做的最佳方法是什么?也许可以拆分成更小的查询 要获取销售人员的总工作时间: SELECT SalesPersonCode, SUM(HoursWorked) AS [HoursWorked] FROM table GROUP BY Sal

我正在使用C#从MSSQL数据库中提取一些数据,它跟踪员工及其工作时间。我只是使用一个常规的简单select语句来提取相关数据。我希望能够总结数据(不确定是否使用了正确的单词)

例如,下图中的黑色文本就是我目前拥有的文本,但我希望能够以某种方式添加红色文本。这样做的最佳方法是什么?也许可以拆分成更小的查询


要获取销售人员的总工作时间:

SELECT SalesPersonCode, SUM(HoursWorked) AS [HoursWorked]
FROM table
GROUP BY SalesPersonCode
应返回:

001 26 002 24 50 应返回:

001 26 002 24 50
50要获得销售人员的总工作时间:

SELECT SalesPersonCode, SUM(HoursWorked) AS [HoursWorked]
FROM table
GROUP BY SalesPersonCode
应返回:

001 26 002 24 50 应返回:

001 26 002 24 50
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

以下查询将在一次查询中获取除总计之外的所有数据:

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

对于SQL Server 2008+您可以在集合中使用
GROUPIN
。在您的示例中,尝试以下方法:

SELECT  SalesPersonCode, 
        SalesPersonName, 
        [Date], 
        SUM(HoursWorked) HoursWorked
FROM YourTable
GROUP BY GROUPING SETS( (SalesPersonCode, SalesPersonName, [Date]),
                        (SalesPersonCode),())

对于SQL Server 2008+您可以在集合中使用
GROUPIN
。在您的示例中,尝试以下方法:

SELECT  SalesPersonCode, 
        SalesPersonName, 
        [Date], 
        SUM(HoursWorked) HoursWorked
FROM YourTable
GROUP BY GROUPING SETS( (SalesPersonCode, SalesPersonName, [Date]),
                        (SalesPersonCode),())

您想将其作为一个单独的行还是另一列?显示数据的最终工具是什么?通常,GUI组件(如网格、透视网格、excel或任何报告工具)都集成了这些功能。查找“运行总数”。这就是你的答案如果你要在crystal reports中使用它,并且需要显示所有行和最终总数(正如我在这里看到的),我认为最好在报告中计算总数directly@Marty-这不是“运行总计”,只是汇总数据。“运行总计”是一个更复杂的问题。您希望将其作为单独的行还是另一列?显示数据的最终工具是什么?通常,GUI组件(如网格、透视网格、excel或任何报告工具)都集成了这些功能。查找“运行总数”。这就是你的答案如果你要在crystal reports中使用它,并且需要显示所有行和最终总数(正如我在这里看到的),我认为最好在报告中计算总数directly@Marty-这不是“运行总计”,只是汇总数据。“运行总计”要复杂得多