奇怪,我下边的语句执行出来的结果没有明细记录汇总却有数据,而且 JSJE还有值,
为什么?不应该的,连明细都没有,怎么会有汇总数据,条件都是一样的呀?急呀
高手给指点迷津.
SQL.Add('select 0 as PX, CustomerName, JSJE');
SQL.Add(' from Customer');
SQL.Add('where 1=1');
if edtKSRQ.Date <> 0 then
begin
SQL.Add('and JSSJ>=:pKSRQ');
Parameters.ParamByName('pKSRQ').Value := edtKSRQ.Date;
end;
if edtJSRQ.Date <> 0 then
begin
SQL.Add('and JSSJ<=:pJSRQ');
Parameters.ParamByName('pJSRQ').Value := edtJSRQ.Date;
end;
SQL.Add('union all');
SQL.Add('select 1 as PX, ''合计'',sum(JSJE) as JSJE');
SQL.Add(' from Customer');
SQL.Add('where 1=1');
if edtKSRQ.Date <> 0 then
begin
SQL.Add('and JSSJ>=:pKSRQ1');
Parameters.ParamByName('pKSRQ1').Value := edtKSRQ.Date;
end;
if edtJSRQ.Date <> 0 then
begin
SQL.Add('and JSSJ<=:pJSRQ1');
Parameters.ParamByName('pJSRQ1').Value := edtJSRQ.Date;
end;
SQL.Add('order by PX');
为什么?不应该的,连明细都没有,怎么会有汇总数据,条件都是一样的呀?急呀
高手给指点迷津.
SQL.Add('select 0 as PX, CustomerName, JSJE');
SQL.Add(' from Customer');
SQL.Add('where 1=1');
if edtKSRQ.Date <> 0 then
begin
SQL.Add('and JSSJ>=:pKSRQ');
Parameters.ParamByName('pKSRQ').Value := edtKSRQ.Date;
end;
if edtJSRQ.Date <> 0 then
begin
SQL.Add('and JSSJ<=:pJSRQ');
Parameters.ParamByName('pJSRQ').Value := edtJSRQ.Date;
end;
SQL.Add('union all');
SQL.Add('select 1 as PX, ''合计'',sum(JSJE) as JSJE');
SQL.Add(' from Customer');
SQL.Add('where 1=1');
if edtKSRQ.Date <> 0 then
begin
SQL.Add('and JSSJ>=:pKSRQ1');
Parameters.ParamByName('pKSRQ1').Value := edtKSRQ.Date;
end;
if edtJSRQ.Date <> 0 then
begin
SQL.Add('and JSSJ<=:pJSRQ1');
Parameters.ParamByName('pJSRQ1').Value := edtJSRQ.Date;
end;
SQL.Add('order by PX');
看得我眼花,希望整理一下,还有结果到底出了什么啊
from Customer
where 1=1
and JSSJ=:pKSRQ
union all
select 1 as PX, '合计',sum(JSJE) as JSJE
from Customer
where 1=1
and JSSJ=:pKSRQ1
order by PX出来的结果是合计 10
但是没有明细?不知道为什么,查询条件都是一样的.
select 0 as PX, CustomerName, JSJE
from Customer
where 1=1
and JSSJ=:pKSRQ看能不能出数据?
begin
SQL.Add('and JSSJ>=:pKSRQ');
Parameters.ParamByName('pKSRQ').Value := edtKSRQ.Date;
end;
if edtJSRQ.Date <> 0 then
begin
SQL.Add('and JSSJ<=:pJSRQ');
Parameters.ParamByName('pJSRQ').Value := edtJSRQ.Date;
end;
把pKSRQ/edtKSRQ.Date/pJSRQ/edtJSRQ.Date这四个值检查一下吧 看看是不是格式有对不上
另外:edtKSRQ.Date
edtJSRQ.Date是没有什么问题,是个日期控件.