关于sql server的问题,请高手指点(并且用了sqlserver后我的系统启动很慢)

todouwang 2004-11-18 09:28:25
//看这代码有什么不妥之处?
procedure TForm10.Button2Click(Sender: TObject);
begin
datamodule5.adoquery_xy.Close;
datamodule5.adoquery_xy.SQL.Clear;
datamodule5.adoquery_xy.SQL.Add('select distinct 系别,');
datamodule5.adoquery_xy.SQL.Add('sum(case 学历 when 教授 then 1 else 0) as 教授,');
datamodule5.adoquery_xy.SQL.Add('sum(case 学历 when 副教授 then 1 else 0) as 副教授,');
datamodule5.adoquery_xy.SQL.Add('sum(case 学历 when 硕士 then 1 else 0) as 硕士,');
datamodule5.adoquery_xy.SQL.Add('sum(case 学历 when 研究生 then 1 else 0) as 研究生,');
datamodule5.adoquery_xy.SQL.Add('sum(case 学历 when 本科 then 1 else 0) as 本科,');
datamodule5.adoquery_xy.SQL.Add('sum(case 学历 when 本科成 then 1 else 0) as 本科成,');
datamodule5.adoquery_xy.sql.Add('sum(case 学历 when 专科 then 1 else 0) as 专科,');
datamodule5.adoquery_xy.SQL.Add('sum(case 学历 when 高中 then 1 else 0) as 高中,');
datamodule5.adoquery_xy.SQL.Add('sum(case 学历 when 中专 then 1 else 0) as 中专,');
datamodule5.adoquery_xy.SQL.Add('sum(case 学历 when 初中 then 1 else 0) as 初中,');
datamodule5.adoquery_xy.SQL.Add('sum(case 学历 when 其它 then 1 else 0) as 其它');
datamodule5.adoquery_xy.SQL.Add(' from table1');
datamodule5.adoquery_xy.SQL.Add(' where 聘用时间>:A and 聘用时间<:B');
datamodule5.adoquery_xy.Parameters.ParamByName('A').Value:=datetimepicker1.DateTime;
datamodule5.adoquery_xy.Parameters.ParamByName('B').Value:=datetimepicker2.DateTime;
datamodule5.adoquery_xy.Prepared:=true;
datamodule5.adoquery_xy.ExecSQL;
end;
//when 后的汉字我已加了""
...全文
154 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
todouwang 2004-11-18
  • 打赏
  • 举报
回复
谢谢,我看看
jinjazz 2004-11-18
  • 打赏
  • 举报
回复
〉〉sum(CASE WHEN 职称 = ''' + 职称 + ''' THEN 1 else 0 END)这样对每个职称的值都运算?

你少看了很多东西

print 一下下面变量的值,你就知道了


SELECT @SQL= @SQL+ ',sum(CASE WHEN 职称 = ''' + 职称 + ''' THEN 1 else 0 END) [' + 职称 + ']' FROM (SELECT DISTINCT 职称 FROM 表1) A

jinjazz 2004-11-18
  • 打赏
  • 举报
回复
拜托你去测试--打开你的查询分析器执行一下

create table 表1
(姓名 char(10),
职称 char(10),
系别 char(10)
)
insert into 表1
select 'aaa','教授','数学系'
union
select 'bbb','副教授','物理系'
union
select 'ccc','硕士','数学系'
union
select 'ddd','研究生','物理系'
union
select 'eee','副教授','数学系'
union
select 'fff','教授','物理系'
union
select 'ggg','教授','数学系'
go

DECLARE @SQL VARCHAR(8000)
SET @SQL='SELECT 系别, count(职称) as 总计'
SELECT @SQL= @SQL+ ',sum(CASE WHEN 职称 = ''' + 职称 + ''' THEN 1 else 0 END) [' + 职称 + ']' FROM (SELECT DISTINCT 职称 FROM 表1) A
SET @SQL=@SQL+ ' FROM 表1 GROUP BY 系别'
EXEC (@SQL)

drop table 表1
colinliu 2004-11-18
  • 打赏
  • 举报
回复
寫成存儲過程試試
todouwang 2004-11-18
  • 打赏
  • 举报
回复
还是不太懂,就这句动态sql就能按系别统计?
sum(CASE WHEN 职称 = ''' + 职称 + ''' THEN 1 else 0 END)这样对每个职称的值都运算?
jinjazz 2004-11-18
  • 打赏
  • 举报
回复
DECLARE @SQL VARCHAR(8000)
SET @SQL='SELECT 系别, count(职称) as 总计'
SELECT @SQL= @SQL+ ',sum(CASE WHEN 职称 = ''' + 职称 + ''' THEN 1 else 0 END) [' + 职称 + ']' FROM (SELECT DISTINCT 职称 FROM 表1) A
SET @SQL=@SQL+ ' FROM 表1 GROUP BY 系别'
EXEC (@SQL)

和普通的查询语句一样用
fansnaf 2004-11-18
  • 打赏
  • 举报
回复
whbo (王红波) 是不是贵阳的呀?
todouwang 2004-11-18
  • 打赏
  • 举报
回复
这写法,我还不知道怎么用呢,
lovezky 2004-11-18
  • 打赏
  • 举报
回复
我也遇到过这个问题,安装过微软的数据库驱动2.8好像速度就快多了
jinjazz 2004-11-18
  • 打赏
  • 举报
回复
你要的是不这样的效果??
jinjazz 2004-11-18
  • 打赏
  • 举报
回复
create table 表1
(姓名 char(10),
职称 char(10),
系别 char(10)
)
insert into 表1
select 'aaa','教授','数学系'
union
select 'bbb','副教授','物理系'
union
select 'ccc','硕士','数学系'
union
select 'ddd','研究生','物理系'
union
select 'eee','副教授','数学系'
union
select 'fff','教授','物理系'
union
select 'ggg','教授','数学系'
go

DECLARE @SQL VARCHAR(8000)
SET @SQL='SELECT 系别, count(职称) as 总计'
SELECT @SQL= @SQL+ ',sum(CASE WHEN 职称 = ''' + 职称 + ''' THEN 1 else 0 END) [' + 职称 + ']' FROM (SELECT DISTINCT 职称 FROM 表1) A
SET @SQL=@SQL+ ' FROM 表1 GROUP BY 系别'
EXEC (@SQL)

drop table 表1
todouwang 2004-11-18
  • 打赏
  • 举报
回复
up
todouwang 2004-11-18
  • 打赏
  • 举报
回复
up
todouwang 2004-11-18
  • 打赏
  • 举报
回复
表结构:姓名,性别,出生日期,职称,聘用时间,最高学历,最高学位,毕业院校,专业,毕业时间,系别,学习经历,职称变动,
要查的结果:按系别统计职称分布:
系别 总计人数 教授 副教授 硕士 研究生 本科 本科成 专科 高中 中专 初中 其它
数学系 3 1 1 1 0 0 0 0 0 0 0 0
物理系 5 2 1 0 0 1 1 0 0 0 0 0
.
.
.
jinjazz 2004-11-18
  • 打赏
  • 举报
回复
把你的表结构和需要的查询结果贴出来

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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