C#对SQL中数据库的某几个字段组合进行数量统计

时间:2021-01-18 15:30:08
我要在C#中操作表
比如 我在数据库中表是这样的
籍贯    性别  身高 
江苏    男       183
上海     女     182
江苏      女     178
湖南      女     180
江苏     男      183
我现在就是想统计籍贯,和性别这两个字段组合起来各个参数的数目
就是说江苏男有多少,上海女有多少,江苏女有多少。。。
这个语句怎么写?
急求

17 个解决方案

#1


急求啊急求!!!!!

#2


select count(*),籍贯,性别 from xxx group by 籍贯,性别

#3


加个group by不就行了
select 籍贯,性别,count(*) from 表 group by 籍贯,性别

#4


select 籍贯,性别,count(1) from 表 group by 籍贯,性别 order by  籍贯,性别

#5


引用 2 楼 bdmh 的回复:
select count(*),籍贯,性别 from xxx group by 籍贯,性别


那要是将它最后输出到一张EXCEl表里面,就是什么籍贯,性别 多少人
怎么搞?

#6


引用 4 楼 lienguo 的回复:
select 籍贯,性别,count(1) from 表 group by 籍贯,性别 order by  籍贯,性别

、那要是将它最后输出到一张EXCEl表里面,就是什么籍贯,性别 多少人
怎么搞?

#7


数据库查询数据-->页面展示到dataGridView-->导出到excel中

#8


count(*)不就是数量吗
可以给它取个别名
select 籍贯,性别,count(*) as 人数  from 表 group by 籍贯,性别

#9


问sql语句,转到数据库论坛去问吧。

#10


输出EXCEL表,你需要了解EXCEL导出的概念
如果没有基础,正好直接学NPOI吧,不要查网上古老的OLEDB了
NPOI下载地址,已经封装好了类,直接用
http://download.csdn.net/detail/diaodiaop/7611721

#11


使用sql语句读取到DataTable中,
参见: http://blog.csdn.net/duanzi_peng/article/details/17414629

#12


引用 8 楼 Z65443344 的回复:
count(*)不就是数量吗
可以给它取个别名
select 籍贯,性别,count(*) as 人数  from 表 group by 籍贯,性别


我的意思是用这样的语句,最后在C#中填充到datatable里面的时候格式是 籍贯 性别 数量 么

#13


引用 12 楼 Adam_09 的回复:
Quote: 引用 8 楼 Z65443344 的回复:

count(*)不就是数量吗
可以给它取个别名
select 籍贯,性别,count(*) as 人数  from 表 group by 籍贯,性别


我的意思是用这样的语句,最后在C#中填充到datatable里面的时候格式是 籍贯 性别 数量 么

对啊,datatable里默认列名不就是数据库的列名吗
你可以直接在SQL语句里指定别名,也可以等读到datatable里之后修改列名

#14


上面的汇总sql都有了,返回的datatable 写到excel,可以用下面这个帖子
http://bbs.csdn.net/topics/390201171

#15


引用 13 楼 Z65443344 的回复:
Quote: 引用 12 楼 Adam_09 的回复:

Quote: 引用 8 楼 Z65443344 的回复:

count(*)不就是数量吗
可以给它取个别名
select 籍贯,性别,count(*) as 人数  from 表 group by 籍贯,性别


我的意思是用这样的语句,最后在C#中填充到datatable里面的时候格式是 籍贯 性别 数量 么

对啊,datatable里默认列名不就是数据库的列名吗
你可以直接在SQL语句里指定别名,也可以等读到datatable里之后修改列名


这是2个问题:

1.sql查询问题:
直接group by即可,楼上都是正确的。自己在数据库中先试一下查询结果,正确即可。

2.DataTable导出到Excel的问题:
这要使用第三方代码才行的,也有很多方案,超大数据量(比如几百万条记录的DataTable)和小数据量的导出(小于几万条),效率也不一样。有些是要使用Excel.EXE,就是依赖office,要安装office的。有些是独立的,直接引用现成的dll即可。
有些办法可以定制各种漂亮的表头、样式、自定义单元格等等,有些则不能附加样式。

需要什么样的效率,要实现怎样的效果,就要看实际情况了。

#16


LZ的SQL语句没有学扎实啊

#17


引用 16 楼 finemi 的回复:
LZ的SQL语句没有学扎实啊



哎,我接触编程都没多久,都是赶鸭子上架。。

#1


急求啊急求!!!!!

#2


select count(*),籍贯,性别 from xxx group by 籍贯,性别

#3


加个group by不就行了
select 籍贯,性别,count(*) from 表 group by 籍贯,性别

#4


select 籍贯,性别,count(1) from 表 group by 籍贯,性别 order by  籍贯,性别

#5


引用 2 楼 bdmh 的回复:
select count(*),籍贯,性别 from xxx group by 籍贯,性别


那要是将它最后输出到一张EXCEl表里面,就是什么籍贯,性别 多少人
怎么搞?

#6


引用 4 楼 lienguo 的回复:
select 籍贯,性别,count(1) from 表 group by 籍贯,性别 order by  籍贯,性别

、那要是将它最后输出到一张EXCEl表里面,就是什么籍贯,性别 多少人
怎么搞?

#7


数据库查询数据-->页面展示到dataGridView-->导出到excel中

#8


count(*)不就是数量吗
可以给它取个别名
select 籍贯,性别,count(*) as 人数  from 表 group by 籍贯,性别

#9


问sql语句,转到数据库论坛去问吧。

#10


输出EXCEL表,你需要了解EXCEL导出的概念
如果没有基础,正好直接学NPOI吧,不要查网上古老的OLEDB了
NPOI下载地址,已经封装好了类,直接用
http://download.csdn.net/detail/diaodiaop/7611721

#11


使用sql语句读取到DataTable中,
参见: http://blog.csdn.net/duanzi_peng/article/details/17414629

#12


引用 8 楼 Z65443344 的回复:
count(*)不就是数量吗
可以给它取个别名
select 籍贯,性别,count(*) as 人数  from 表 group by 籍贯,性别


我的意思是用这样的语句,最后在C#中填充到datatable里面的时候格式是 籍贯 性别 数量 么

#13


引用 12 楼 Adam_09 的回复:
Quote: 引用 8 楼 Z65443344 的回复:

count(*)不就是数量吗
可以给它取个别名
select 籍贯,性别,count(*) as 人数  from 表 group by 籍贯,性别


我的意思是用这样的语句,最后在C#中填充到datatable里面的时候格式是 籍贯 性别 数量 么

对啊,datatable里默认列名不就是数据库的列名吗
你可以直接在SQL语句里指定别名,也可以等读到datatable里之后修改列名

#14


上面的汇总sql都有了,返回的datatable 写到excel,可以用下面这个帖子
http://bbs.csdn.net/topics/390201171

#15


引用 13 楼 Z65443344 的回复:
Quote: 引用 12 楼 Adam_09 的回复:

Quote: 引用 8 楼 Z65443344 的回复:

count(*)不就是数量吗
可以给它取个别名
select 籍贯,性别,count(*) as 人数  from 表 group by 籍贯,性别


我的意思是用这样的语句,最后在C#中填充到datatable里面的时候格式是 籍贯 性别 数量 么

对啊,datatable里默认列名不就是数据库的列名吗
你可以直接在SQL语句里指定别名,也可以等读到datatable里之后修改列名


这是2个问题:

1.sql查询问题:
直接group by即可,楼上都是正确的。自己在数据库中先试一下查询结果,正确即可。

2.DataTable导出到Excel的问题:
这要使用第三方代码才行的,也有很多方案,超大数据量(比如几百万条记录的DataTable)和小数据量的导出(小于几万条),效率也不一样。有些是要使用Excel.EXE,就是依赖office,要安装office的。有些是独立的,直接引用现成的dll即可。
有些办法可以定制各种漂亮的表头、样式、自定义单元格等等,有些则不能附加样式。

需要什么样的效率,要实现怎样的效果,就要看实际情况了。

#16


LZ的SQL语句没有学扎实啊

#17


引用 16 楼 finemi 的回复:
LZ的SQL语句没有学扎实啊



哎,我接触编程都没多久,都是赶鸭子上架。。