所以我想在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;
但我收到一條錯誤訊息:
當月(DATE_PAI)=1 then sum(MT) else 0 end 時,運算式情況中沒有語法錯誤運算子
任何人都可以幫助我嗎
uj5u.com熱心網友回復:
試著做 :
(組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');
//...
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/315598.html
