Var vSQL:String; Begin vSQL:='Select name,'; vSQL:=vSQl+'sum(case subject when '''+subject+'''; //SQL里面单引号到DELPHI变成两个单引号,你自己换一下。 //... With Query1 do Begin //... Open; End; end;
----------------------------------------------
充电..........
1.写sql语句:(就是单引号变成两个单引号,三个单引号变成六个单引号) With qry1 do begin close; sql.Add('Declare @sql varchar(8000)'); sql.Add('set @sql='select name,''); sql.Add('select @sql=@sql+'sum(case subject when '''+subject+''' then source else 0 end) as ''); sql.Add('+subject+' ,' from (select Distinct subject from test) as a'); sql.Add('select @sql=left(@sql,len(@sql)-1)+' from test group by name''); sql.Add('exec(@sql)'); Open; end; 2.建存储过程,再用query调用 在查询分析器: create procedure Proc_Select_Source as begin declare @sql varchar(8000) set @sql='select name,' select @sql=@sql+'sum(case subject when ''+subject+'' then source else 0 end) as ' +subject+' ,' from (select Distinct subject from test) as a select @sql=left(@sql,len(@sql)-1)+' from test group by name' exec(@sql) end
DELPHI中: With qry1 do begin close; sql.Add('exec Proc_Select_Source'); Open; end;
----------------------------------------------
充电..........