如何用一条sql语句得到员工表里 学历字段里值为 "硕士" "本科" "专科","其他"(小学,高中,大学,中专,夜校电大、自考,所有的都算上) 的各有多少人?用一条SQL 语句找出来。更变态的最后要求这样的表格形式输出结果。硕士 本科 专科 其他 xx人 yy人 zz人 ww人
解决方案 »
- CheckBox1 问题
- “ASP.consulting_aspx.GetTypeHashCode()”: 没有找到适合的方法来重写 c:\WINDOWS\Microsoft.NET\F
- vs2010一个网站工程。新建立一个文件夹。不是在工程管理器中添加的。
- 有关于updatePanel
- 关于sql server 2000中的数据重复问题
- 谁有CmailServer的接口类库,和接口文档
- 高手快快来帮忙~!
- 我们为什么要抛弃使用HTML......
- 【200分】asp.net导出数据到Excel表格问题
- 在线等候,我在写一个Web控件是碰到难题,请指点
- 页面嵌套Iframe,主页面没有竖向滚动套,Iframe里没有横向滚动条
- 【分享】纯手工打造Emit,实现AOP,附源码下载
group by的结果在行列转化而已。
至于行列转化还是用程序做好一点
sum(case xl when '本科' then c else null) 本科
sum(case xl when '大专' then c else null) 大专
sum(case xl when '硕士' then c else null) 硕士
sum(case xl when '其它' then c else null) 其它
from
(
select count(*) c,xl
from
(
select
*,
case 学历
when '本科' then 学历
when '硕士' then 学历
when '大专' then 学历
else '其它'
end as xl
from tb
) as t group by xl
as tt
偷偷告诉lz,sql2005以上版本身就有专用方法来做行列转换了,11楼那是sql2k的标准解
20 30 40E1,E2,E3 唉太离谱了,没文档那就是天书而且知道E1,E2,E3是啥不,那是 E1==上午九点采集数据,E2=上午十点采集数据,数据表本身就是横着设计地,我都怀疑他们读过3范式没有!!
见过将BI LOAP项目当作 OLTP来用的没?
select a=(select count(1) from tb where name='硕士'),b==(select count(1) from tb where name='本科')....from tbname
这个需求蛮简单的
这种数据库设计倒是没见过,
见过一些小的行业软件,怕被人破,所以把所有字段全部以无任何意义的字符来命名的做法.
比如一个表所有的字段都是yxx00001一直到yxx00020,那才叫一个晕.
var ret = new DataTable();
foreach (DbDataRecord x in rec) //在foreach循环结束,DbDataReader会自动Close
{
ret.Columns.Add((string)x["name"], typeof(int),);
var row= ret.NewRow();
row[(string)x["name"]]= (int)x["value"];
ret.Rows.Add(row);
}
基于这比较简单,我们就可以发现,所谓要求数据库中必须用一句话来返回这个,只是用来考试的,不一定在开发中要去纠结只能用数据库查询。
var ret = new DataTable();
foreach (DbDataRecord x in rec) //foreach结束时会自动调用DataReader的Close方法
{
ret.Columns.Add((string)x["name"], typeof(int));
if (ret.Rows.Count == 0)
{
var row = ret.NewRow();
row[(string)x["name"]] = (int)x["value"];
ret.Rows.Add(row);
}
else
ret.Rows[0][(string)x["name"]]=(int)x["value"];
Select
sum(if(xl = '硕士',1, 0)) as 硕士 ,
sum(if(xl = '本科',1, 0)) as 本科 ,
sum(if(xl = '大专',1, 0)) as 大专 ,
sum(if(xl != '硕士' and xl !='本科' and xl != '大专',1, 0)) as 其它
from users;完工,我经过测试了,好使啊。
比如,如果当前行是硕士,就加1,否则加0 。
拜拜了。
sum(case when 学历='本科' then 1 else 0 end ) as 本科,
这样子行不,瞎写的