如何解决SQL / C#Windows应用程序-一个数据集有多个计数?
| 我有一个C#Windows应用程序,其中包含保存选民信息的sql表。存储的字段之一是\'Party \',其存储值为\'Dem \',\'Rep \',\'Ind \',\'Other \'。我想按这些值求和,并使用count函数显示所有记录的总数。我知道如何使用count来获取记录集中所有记录的总数,但是您如何计算字段中的每个值。 我有一个带有文本框的表格,其中包含总记录,总Dem,总代表,总Ind和总其他。有一个带有单选按钮的列表框。默认按钮为“全部”,显示所有记录。每个值(Dem,Rep,Ind和Other)都有一个单选按钮。选择单选按钮时,列表会因选择而变窄。文本框中的总数不会更改,并且始终显示每个值的总数。 提前致谢。解决方法
一种简单的方法是为每个计数建立一个标量函数。就像是
select @return = count(party) where party = \'Dem\'
然后是一个视图,其中包含每个方的计数。有更多高效的方法可以执行此操作,但是从您的问题来看,这听起来像是您刚刚起步,这可能是您最直接的方法。
在此处了解标量函数:
http://msdn.microsoft.com/en-us/library/ms186755.aspx
并在这里查看:
http://msdn.microsoft.com/en-us/library/ms187956.aspx
对于数据库而言,更好的方法是建立一个使用\“ group by \”的视图,但是它将返回行而不是列,这将为每个c#控件设置值时为您带来更多的工作。
http://msdn.microsoft.com/en-us/library/ms177673.aspx
, SELECT COUNT(1) AS total,COUNT(CASE WHEN Party = \'Dem\' THEN 1 ELSE 0 END) AS demTotal,COUNT(CASE WHEN Party = \'Rep\' THEN 1 ELSE 0 END) AS repTotal,COUNT(CASE WHEN Party = \'Ind\' THEN 1 ELSE 0 END) AS indTotal,COUNT(CASE WHEN Party = \'Other\' THEN 1 ELSE 0 END) AS otherTotal
FROM MyTable
像下面这样的事情将工作并将数据放在列中。但是,根据数据的大小,这可能不是最有效的。一个简单的分组依据可能效果最好(在获得结果后再对结果进行汇总)。
SELECT Party,COUNT(1) AS total
FROM MyTable
GROUP BY Party
更新:确保对Party进行索引!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。