oracle 问题 请进

来源:百度知道 编辑:UC知道 时间:2024/06/08 07:18:53
begin
query2.close;
query2.SQL.clear;
query2.SQL.Add('select * from (select pzm,jgdw,ksph,zzph,gzlhm,fzxs,decode(szgx,''WAF'',''芯片库'',szgx) szgx,sl,lrsj,zt,xpmc,bz1,bz2 from (select pzm,jgdw,ksph,zzph,gzlhm,fzxs,szgx,sl,lrsj,zt,xpmc,BZ1,BZ2 from VIEW_ICSC_ZCP_ALL where szgx=:ppgx union all ');
query2.SQL.Add('select pzm||''小计'' pzm,null,null,null,null,null,szgx,sum(sl) sl,max(lrsj),null,null,null,null from VIEW_ICSC_ZCP_ALL where szgx=:ppgx group by pzm,szgx) ');
query2.SQL.Add('order by lrsj,pzm,szgx,zzph) union all');
query2.SQL.Add('select ''总计'',null,null,null,null,null,null,sum(sl) sl,null,null,null,null,null from VIEW_ICSC_ZCP_ALL where szgx=:ppgx ');
if RzComboBox1.Text='芯片库' then
query2.ParamByName('ppgx').AsString :='WAF'
else
query2.ParamByName('ppgx').AsString :=RzComboBox1.T

union 和union all 是相差不太多的 只是union列出的值是在查询中合并两个或多个 SELECT 语句的结果集。union结果集中的列名总是等于 union 中第一个 SELECT 语句中的列名 而union会列出查询的所有值
group by 是对查询到的结果进行分类的