線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:909
推到 Plurk!
推到 Facebook!

请问如何对计算字段ORDER BY

尚未結案
newyanglei
一般會員


發表:11
回覆:3
積分:2
註冊:2005-06-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-11 10:56:44 IP:218.19.xxx.xxx 未訂閱
请问如何对计算字段ORDER BY 小弟在对一计算字段使用ORDER BY 时候,程式报错 'InValid Column name 'Sender'',Sender为一计算字段,谢谢,程式代码如下: procedure TOpen.Table1SenderGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin if Table1.FieldByName('UPR').AsString = EmptyStr then Text := EmptyStr else if MatchUPR(Table1.FieldByName('MfrBrNo').AsString, Table1.FieldByName('UPR').AsString) then Text := Table1.FieldByName('MfrName').AsString else if MatchUPR(Table1.FieldByName('SubrBrNo').AsString, Table1.FieldByName('UPR').AsString) then Text := Table1.FieldByName('SubrName').AsString else Text := 'UNKNOWN'; end; procedure TOpen.btnSearchClick(Sender: TObject); var SQLText: string; begin ........ ........ if cbxorderby.ItemIndex > 0 then begin case cbxorderby.ItemIndex of 1 : SQLText:= SQLText ' order by UPR'; 2 : SQLText:= SQLText ' order by ApprovalNo'; 3 : SQLText:= SQLText ' order by Sender'; ......... .........
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-11 12:06:57 IP:61.222.xxx.xxx 未訂閱
Sender为一计算字段是指CALCULATED型態嗎? 在TABLE中事實上不存在的欄位無法查詢也無法下達ORDER BY 指令, 所以SENDER這個欄位若是不存在TABLE中並沒辦法下達ORDER BY 所以會有錯誤訊息 不過呢可若是SENDER這欄位值是由TABLE中計算來的 則可以下達如 SQLTEXT ' ORDER BY (FIELD1/FIELD2)' 發表人 - huangeider 於 2005/08/11 12:10:28
deity
尊榮會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-11 16:01:18 IP:218.15.xxx.xxx 未訂閱
newyanglei 您好: 如何对计算字段ORDER BY?可以采用如下方法试试: 假如: select field1,sum(field2)as sender from table group by field1 order by 2 //sender为计算字段,在第二栏,所以就order by 2,如果是第三栏的话,select field1,field3,sum(field2)as sender from table group by field1,field3 order by 3 ,就如此类推order by 3。 试试看 <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
newyanglei
一般會員


發表:11
回覆:3
積分:2
註冊:2005-06-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-12 12:18:10 IP:218.19.xxx.xxx 未訂閱
各位大大,Sender 字段是Calculate型,它是根据条件从同一个表中不同的字段取值,比如:当Field1>0时,Sender就取Field2的值,当Field10时,Sender就取Field3的值。
newyanglei
一般會員


發表:11
回覆:3
積分:2
註冊:2005-06-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-12 12:21:52 IP:218.19.xxx.xxx 未訂閱
Sorry,上面少了个"<",Sender 字段是Calculate型,它是根据条件从同一个表中不同的字段取值,比如:当Field1>0时,Sender就取Field2的值,当Field1<0时,Sender就取Field3的值。
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-12 14:06:31 IP:210.65.xxx.xxx 未訂閱
Hi newyanglei,
In Oracle :
select  filed1,
        filed2,
        filed3,
        decode(sign(filed1),1,file2,-1,filed3,'Unkown') sender
from    yourtabe
order by
        decode(sign(filed1),1,file2,-1,filed3,'Unkown')    In SQL Server :
select  filed1,
        filed2,
        filed3,
        case 
        when filed1 > 0 then field2
        when filed1 < 0 then filed3
        else  'unknown'
        end as sender
from    YourTable
order by
        when filed1 > 0 then field2
        when filed1 < 0 then filed3
        else  'unknown'
        end    In Access :
select  filed1,
        filed2,
        filed3,
        iif(filed1>0,filed2,iif(filed1<0,Field3,'Unknown')) as sender
from    YourTable
order by
        iif(filed1>0,filed2,iif(filed1<0,Field3,'Unknown'))
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
系統時間:2024-05-19 8:06:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!