//看这代码有什么不妥之处?
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 后的汉字我已加了""
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 后的汉字我已加了""
解决方案 »
- delphi idhttp post 正确和错误的信息两次结果一样??
- 有谁能帮我解释这条语句中的参数的意思
- 为什么delphi的property自动生成的read和write函数,只有set方法而没有get方法?
- 推荐一个超好的bt下载计算机讲座,认证培训资料,学习软件,和英语讲座考研讲座等等好东西大家快来下啊
- 怎样更新查询结果?
- 如何将dbgrid的首列固定(急!)
- 运行之前用Delphi编写的程序出现乱码。
- 请问如何使一个动态创建的组件,使它属于另一个control
- 如何得到动态数组的实际大小, Length好像不行?
- 如何为PageControl追加addpage方法?
- dll中给var pchar赋值出现乱码?请大侠指教!
- 打听一下北京网新喜思企业的情况?
(姓名 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','教授','数学系'
goDECLARE @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
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) 和普通的查询语句一样用
sum(CASE WHEN 职称 = ''' + 职称 + ''' THEN 1 else 0 END)这样对每个职称的值都运算?
(姓名 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','教授','数学系'
goDECLARE @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
SELECT @SQL= @SQL+ ',sum(CASE WHEN 职称 = ''' + 职称 + ''' THEN 1 else 0 END) [' + 职称 + ']' FROM (SELECT DISTINCT 职称 FROM 表1) A