在 delphi 的 adoquery 中使用 sql case 语句
use sql case statement in a adoquery of delphi
所以我想在 delphi 中使用 adoquery 和 case 语句计算一个字段的总和;
我使用的代码是这样的:
DataModule2.ADOQuery1_630.sql.clear;
DataModule2.ADOQuery1_630.sql.Add('select STATUT,case when month(DATE_PAI)=1 then sum(MT) else 0 end AS m');
DataModule2.ADOQuery1_630.sql.Add('from table');
DataModule2.ADOQuery1_630.sql.Add('where STATUT in( :dd ,:df) and TYPE_QUIT = :l ');
DataModule2.ADOQuery1_630.sql.Add('group by STATUT');
DataModule2.ADOQuery1_630.Parameters.ParamByName('dd').Value:=pm;
DataModule2.ADOQuery1_630.Parameters.ParamByName('df').Value:=pp;
DataModule2.ADOQuery1_630.Parameters.ParamByName('l').Value:=typeQ;
DataModule2.ADOQuery1_630.prepared := true;
DataModule2.ADOQuery1_630.open;
但我收到一条错误消息:
syntax error operator absent in the expression case when
month(DATE_PAI)=1 then sum(MT) else 0 end
谁能帮帮我
尝试做:
(组SELECT
和FROM
在同一个DataModule2.ADOQuery1_630.sql.Add()
)
DataModule2.ADOQuery1_630.sql.clear;
DataModule2.ADOQuery1_630.sql.Add('SELECT STATUT, SUM(case when month(DATE_PAI)=1 then MT ELSE 0 END) AS m FROM table');
DataModule2.ADOQuery1_630.sql.Add('WHERE STATUT in(:dd,:df) and TYPE_QUIT=:l');
DataModule2.ADOQuery1_630.sql.Add('GROUP BY STATUT');
//...
所以我想在 delphi 中使用 adoquery 和 case 语句计算一个字段的总和; 我使用的代码是这样的:
DataModule2.ADOQuery1_630.sql.clear;
DataModule2.ADOQuery1_630.sql.Add('select STATUT,case when month(DATE_PAI)=1 then sum(MT) else 0 end AS m');
DataModule2.ADOQuery1_630.sql.Add('from table');
DataModule2.ADOQuery1_630.sql.Add('where STATUT in( :dd ,:df) and TYPE_QUIT = :l ');
DataModule2.ADOQuery1_630.sql.Add('group by STATUT');
DataModule2.ADOQuery1_630.Parameters.ParamByName('dd').Value:=pm;
DataModule2.ADOQuery1_630.Parameters.ParamByName('df').Value:=pp;
DataModule2.ADOQuery1_630.Parameters.ParamByName('l').Value:=typeQ;
DataModule2.ADOQuery1_630.prepared := true;
DataModule2.ADOQuery1_630.open;
但我收到一条错误消息:
syntax error operator absent in the expression case when month(DATE_PAI)=1 then sum(MT) else 0 end
谁能帮帮我
尝试做:
(组SELECT
和FROM
在同一个DataModule2.ADOQuery1_630.sql.Add()
)
DataModule2.ADOQuery1_630.sql.clear;
DataModule2.ADOQuery1_630.sql.Add('SELECT STATUT, SUM(case when month(DATE_PAI)=1 then MT ELSE 0 END) AS m FROM table');
DataModule2.ADOQuery1_630.sql.Add('WHERE STATUT in(:dd,:df) and TYPE_QUIT=:l');
DataModule2.ADOQuery1_630.sql.Add('GROUP BY STATUT');
//...