簡體   English   中英

Delphi、FireDAC、MySQL 查詢

[英]Delphi, FireDAC, MySQL Query

qClient.SQL.Clear;
qClient.SQL.Text := 'Select C.Lastname,C.Firstname,C.Clino,C.Address,' +
                    'C.City,C.State,C.Zip,C.Phone,C.HerCell,C.HisCell,' +
                    'C.Texting,C.Since,C.Selected,' +
                    'SUM( I.Charges - I.Discount ) as Revenue ' +
                    'from Client C join Invoice I ' +
                    'on I.Clino = C.Clino ' +
                    'where I.Date between :S and :E ' +
                    'and I.Inv = true ' +
                    'group by C.Clino ' +
                    'order by Revenue desc ';
qClient.ParamByName('S').AsDate := dStart;
qClient.ParamByName('E').AsDate := dEnd;
qClient.DetailFields := 'Clino';
qClient.Open();

如何修改上面的代碼,以便查詢僅包含超過最小值(例如可能為 1000)的“收入”值? 它目前包括所有客戶端。

謝謝,斯派克

你需要一個HAVING子句:

qClient.SQL.Text := 'Select C.Lastname,C.Firstname,C.Clino,C.Address,' +
                    'C.City,C.State,C.Zip,C.Phone,C.HerCell,C.HisCell,' +
                    'C.Texting,C.Since,C.Selected,' +
                    'SUM( I.Charges - I.Discount ) as Revenue ' +
                    'from Client C join Invoice I ' +
                    'on I.Clino = C.Clino ' +
                    'where I.Date between :S and :E ' +
                    'and I.Inv = true ' +
                    'group by C.Clino ' +
                    'having Revenue > 1000 ' +
                    'order by Revenue desc ';

HAVING子句應用條件並過濾聚合后的查詢結果。
在這種情況下Revenue是聚集的柱,不能一個中使用WHERE子句,其還過濾的查詢,因為條件WHERE聚集之前被施加子句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM