写个函数来生成 SQL查询语句,比如:
function getSQLText(startyear,endyear: integer): string ;
var
s_year,e_year: integer;
s1,s2: string;
begin
s_year := startyear;
e_year := s_year + 1;
s1 := ''; s2 := '';
if e_year > endyear then
result := ''
else
begin
s1 := ' select ' + '''' + inttostr(s_year)
+ '-' + inttostr(e_year) + '''' + ' as 日期, sum(产量)as 产量 ';
s1 := s1 + ' From table ';
s1 := s1 + ' WHERE ((年份='+inttostr(s_year)
+')AND(月份>11)) OR ((年份='+inttostr(e_year)
+')AND(月份<=3)and(日期<11)) ';
s2 := getSQLText(e_year,endyear);
if s2 = '' then
result := s1
else
result := s1 + #13 + ' UNION ' + #13 + s2;
end;
end;
调用:
Query1.Close;
Query1.SQL.Text := GetSQLText(1990,2000);
即可得到 1900 到 2000 年间的各年合计数据。
如果数据库支持存储过程,也可以用存储过程来做。