sql紧急!11

womanlee 2002-05-16 09:39:43
有一个sql的问题,如有表如下:
帐号 姓名 学历 单位
1 打 本科 A
2 发电 硕士 B
3 非试点 博士 A
4 ads 硕士 B
5 Asd 本科 B

想显示结果如下:
本科 硕士 博士 总个数
A 个数 个数 个数 个数
B 个数 个数 个数 个数
总计 个数 个数 个数 个数

个数即为同时满足横竖两个条件的记录
该怎么做???

数据库为oracle 如果 a zidu
...全文
86 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrzho 2002-07-01
  • 打赏
  • 举报
回复
.
womanlee 2002-05-16
  • 打赏
  • 举报
回复
那位大侠,帮忙看看啊??!!
womanlee 2002-05-16
  • 打赏
  • 举报
回复
快点来看看呀
womanlee 2002-05-16
  • 打赏
  • 举报
回复
各位大侠,我快要崩溃了,我的表结构现在是这样的table1
帐号 姓名 学历 单位 人数
1 打 1 1 32
2 发电 2 2 34
3 非试点 3 2 56
4 ads 4 3 54
5 Asd 5 4 55

table2 table3
bdm 单位名称 dm 学历
1 微微 1 本科
2 峨峨 2 专科
3 大幅度 3 研究生
4 热
5 股份

结果

单位名称 本科 研究生 专科
微微 人数 人数 人数

峨峨 人数 人数 人数

大幅度 人数 人数 人数

热 人数 人数 人数

股份 人数 人数 人数
tuorx 2002-05-16
  • 打赏
  • 举报
回复
可以用两人结果集进行JOIN操作。如:
Select a.*,b.* From
(Select * From TableName) a
Left/Full Join
(Select * From TableName) b
On a.FieldName=b.FieldName
JYYF21 2002-05-16
  • 打赏
  • 举报
回复
select a.单位,a.本科,b.硕士,c.博士, d.总个数
from
(select 单位,count(*) as 本科 from table where 学历 = '本科' group by 单位 ) as a,
(select 单位,count(*) as 硕士 from table where 学历 = '硕士' group by 单位 ) as b,
(select 单位,count(*) as 博士 from table where 学历 = '博士' group by 单位 ) as c,
(select 单位,count(*) as 总人数 from table group by 单位 ) as d
where
a.单位 = b.单位 and a.单位 = c.单位 and a.单位 = d.单位
火鸟李国平 2002-05-16
  • 打赏
  • 举报
回复
典型的分组问题,如上所贴
mrzho 2002-05-16
  • 打赏
  • 举报
回复
这也是一个交叉表的问题,在SQL的HELP里有详细的说明。
firetoucher 2002-05-16
  • 打赏
  • 举报
回复
select a.单位,本科,硕士,博士, 总个数
from
(select 单位,count(*) as 本科 from table where 学历 = '本科' group by 单位 ) as a,
(select 单位,count(*) as 硕士 from table where 学历 = '硕士' group by 单位 ) as b,
(select 单位,count(*) as 博士 from table where 学历 = '博士' group by 单位 ) as c,
(select 单位,count(*) as 总个数 from table group by 单位 ) as d
where
a.单位 = b.单位 and a.单位 = c.单位 and a.单位 = d.单位
firetoucher 2002-05-16
  • 打赏
  • 举报
回复
select a.单位,本科,硕士,博士, 总个数
from
(select 单位,count(*) as 本科 from table where 学历 = '本科' group by 单位 ) as a,
(select 单位,count(*) as 硕士 from table where 学历 = '硕士' group by 单位 ) as b,
(select 单位,count(*) as 博士 from table where 学历 = '博士' group by 单位 ) as c,
(select 单位,count(*) as 总人数 from table group by 单位 ) as d
where
a.单位 = b.单位 and a.单位 = c.单位 and a.单位 = d.单位
日总是我哥 2002-05-16
  • 打赏
  • 举报
回复
oracle 我不熟~~

要是MS SQL Server 我想可以帮帮~~~ :-)

budi 2002-05-16
  • 打赏
  • 举报
回复
1,建立一个所需结构的临时表
2,分组查询
3,将分组查询通过插入和更新添入临时表

一条SQL命令很难完成这样的任务,建议编写一个专用的存储过程
短歌如风 2002-05-16
  • 打赏
  • 举报
回复
其实这是一个统计问题,你不应该试图把"学历"作为字段,否则当table3中的数据增加一行,你就要重写你的SQL语句和对它处理的代码.
应该这样写:
SELECT SUM( Dbo_table1.人数 ) 人数, Dbo_table2.单位名称, Dbo_table3.学历
FROM dbo.TABLE1 Dbo_table1
0A INNER JOIN dbo.TABLE2 Dbo_table2
ON (Dbo_table1.单位 = Dbo_table2.bdm)
INNER JOIN dbo.TABLE3 Dbo_table3
ON (Dbo_table1.学历 = Dbo_table3.dm)
GROUP BY Dbo_table2.单位名称, Dbo_table3.学历
如果想显示成你想要的形式(你要把它作为一种显示效果,而不是查询结果的组织)可以不用DBGrid,自己用StringGride去显示.也可以用用Decision Cube控件:
写好查询(如在ADOQuery1中);
放一个DecisionCube,Dataset设为ADOQuery1;
放一个DecisionSource,DecisionCube设为刚放上的DecisionCube;
放一个DecisionGrid,DecisionSource设为刚放上的DecisionSource;
设置ADOQuery1.Active为true.

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧