我还没有代码作为示例,只是想知道最好的方法。
我正在使用vb2010并且有一个数据表,我需要显示不同子组的平均值。
即
我需要计算所有名称的平均值,然后计算组的平均值(状态)
这只是一个例子,我可以有很多不同的状态。
数据按日期范围从SQL Server加载到VB2010中的数据适配器,我目前使用datagridview显示所有行。
数据集中有很多其他列。
不确定获得所需结果的最佳方法,帮助赞赏。
答案 0 :(得分:1)
对于第一个分组,您应该可以使用:
Select
[Name],
[Status],
avg(Score) over (partition by [Status], [Name] order by (select null))
from table
group by
[Name],
[Status]
总平均值:
avg(Score) over (partition by [Status] order by (select null))
您还应该能够使用条件聚合来完成此任务。
avg(case when [Name] = 'Fred' and [Status] = 'Accepted' then Score end) as FredAcceptedAvg,
avg(case when [Name] = 'Ian' and [Status] = 'Accepted' then Score end) as FredAcceptedAvg,
avg(case when [Name] = 'Fred' and [Status] = 'Declined' then Score end) as FredDeclinedAvg,
avg(case when [Name] = 'Ian' and [Status] = 'Declined' then Score end) as IanDeclinedAvg,
avg(case when [Status] = 'Declined' then Score end) as DeclinedAvg,
avg(case when [Status] = 'Accepted' then Score end) as AcceptedAvg
然后你可以随时随地显示它。