全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1107
推到 Plurk!
推到 Facebook!

請教一個Case的SQL語法

答題得分者是:deity
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-12 09:44:38 IP:202.62.xxx.xxx 未訂閱
請教各位前輩    工作環境﹕Access資料庫形態﹐Delphi 6 ADO存取﹒ 欄位名﹕IDNO, NAME, AMOUNTTOTAL, MEDICALINSURANCEPAY 現在想用SQL語法在其中多加入兩個欄位﹐其中一個計算欄位是用MEDICALINSURANCEPAY的值除以4.5再乘以5﹐已經完成﹐另一個計算欄位需要判斷MEDICALINSURANCEPAY的值是否大于1,000,000﹐如果大于﹐則只顯示1,000,000﹐如果小于1,000,000﹐則顯示AMOUNTTOTAL的值(以下紅色處﹐目前沒有做判斷)﹐SQL敘述如下﹐請各位前輩指點紅色處該如何修改﹕
begin
  ADOQuery8.Close;
  ADOQuery8.SQL.Clear;
  ADOQuery8.SQL.Add('Select B.IDNO, B.NAME, A.MEDICALINSURANCENO, ');
  ADOQuery8.SQL.Add('B.AMOUNTTOTAL, B.AMOUNTTOTAL As MIPAY, B.MEDICALINSURANCEPAY, ');
  ADOQuery8.SQL.Add('Round(B.MEDICALINSURANCEPAY/SelfPercentTemp*CompanyPercentTemp) As MEDICALINSURANCECOMPANYPAY ');
  ADOQuery8.SQL.Add('From Employee A, DSalarySecond B Where ');
  ADOQuery8.SQL.Add('A.IDNO = B.IDNO and B.MEDICALINSURANCEPAY <> 0 ');
  ADOQuery8.SQL.Add('and B.MONTHNAME = '''+MonthRemark+'''');
  if suiComboBox3.Text <> '' then
    ADOQuery8.SQL.Add(' and A.SECTIONNAME = '+QuotedStr(suiComboBox3.Text));
  ADOQuery8.SQL.Text := StringReplace(ADOQuery8.SQL.Text, 'SelfPercentTemp',
    FloatToStr(ADOTable2.FieldByName('SELFPAYPERCENT').AsFloat), []);
  ADOQuery8.SQL.Text := StringReplace(ADOQuery8.SQL.Text, 'CompanyPercentTemp',
    FloatToStr(ADOTable2.FieldByName('COMPANYPAYPERCENT').AsFloat), []);
  ADOQuery8.Open;
end;
謝謝﹗ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-12 11:37:41 IP:218.15.xxx.xxx 未訂閱
cashxin2002大大您好:    
begin
  ADOQuery8.Close;
  ADOQuery8.SQL.Clear;
  ADOQuery8.SQL.Add('Select B.IDNO, B.NAME, A.MEDICALINSURANCENO, ');
  ADOQuery8.SQL.Add('B.AMOUNTTOTAL, iif(B.MEDICALINSURANCEPAY >1000000,1000000,B.AMOUNTTOTAL)) As MIPAY,  B.MEDICALINSURANCEPAY, '); //这是不是您要的?
  
  ADOQuery8.SQL.Add('Round(B.MEDICALINSURANCEPAY/SelfPercentTemp*CompanyPercentTemp) As MEDICALINSURANCECOMPANYPAY ');
  ADOQuery8.SQL.Add('From Employee A, DSalarySecond B Where ');
  ADOQuery8.SQL.Add('A.IDNO = B.IDNO and B.MEDICALINSURANCEPAY <> 0 ');
  ADOQuery8.SQL.Add('and B.MONTHNAME = ''' MonthRemark '''');
  if suiComboBox3.Text <> '' then
    ADOQuery8.SQL.Add(' and A.SECTIONNAME = ' QuotedStr(suiComboBox3.Text));
  ADOQuery8.SQL.Text := StringReplace(ADOQuery8.SQL.Text, 'SelfPercentTemp',
    FloatToStr(ADOTable2.FieldByName('SELFPAYPERCENT').AsFloat), []);
  ADOQuery8.SQL.Text := StringReplace(ADOQuery8.SQL.Text, 'CompanyPercentTemp',
    FloatToStr(ADOTable2.FieldByName('COMPANYPAYPERCENT').AsFloat), []);
  ADOQuery8.Open;
end;
============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-12 12:51:16 IP:202.62.xxx.xxx 未訂閱
感謝deity相助﹐已解決問題﹗    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
系統時間:2024-06-27 22:27:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!