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

sql中查询最近一笔资料

尚未結案
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-05 15:06:20 IP:218.72.xxx.xxx 未訂閱
各位大大: 请教一下各位大大,比如说,我在sql中一般用select top 1 * from saletable 来显示客户最近的一笔销售资料,但我有许多客户,如果我想同时显示出每一个客户最近的一笔交易资料,该如何写呢? Thank you very much!
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-05 17:06:14 IP:218.163.xxx.xxx 未訂閱
類似的觀念你參考看看..我想在table中找尋每個模組最新版本的資料 select * from sysmodule a  where CDATE=(select max(CDATE) from sysmodule  b where a.SYSID=b.SYSID) 永遠追不上技術更新的速度
------
星期一,二...無窮迴圈@@
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-05 17:16:39 IP:211.75.xxx.xxx 未訂閱
客戶檔 Customer -> CustomerNo -> CustomerName 交易檔 Sale -> SaleNo -> SaleDate -> CustomerNo Select C.CustomerNo, (Select Top 1 S.SaleDate From Sale S Where S.CustomerNo = C.CustomerNo Order by SaleDate Desc) as SaleDate From Customer C Order By C.CustomerNo Asc 這樣就可以把所有客戶的最近一筆資料一次抓進來 但是如果是沒有交易的客戶, SaleDate 的值會是 Null 試看看吧! Eric Lin
------
Eric Lin
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-05 17:44:14 IP:211.75.xxx.xxx 未訂閱
pgdennis 的方法比較好喔。 沒有交易的不會有紀錄 我又賺到了。 Eric Lin
------
Eric Lin
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-05 20:49:52 IP:61.164.xxx.xxx 未訂閱
Eric039大大: 您的方法我已试过了,但发现交易檔中的栏位只能出现SaleDate,那如果该Sale交易档还有好几个栏位,如下,该如何show出呢? 客戶檔 Customer -> CustomerNo -> CustomerName 交易檔 Sale -> SaleNo -> SaleDate -> CustomerNo ->s1 -> s2 Pgdennis大大的方法我还没试出来....,如方便,还请以上面的客户档与交易档为例以方便愚弟。 Thank you very much! 發表人 - luowy651 於 2004/03/05 20:51:18
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-05 22:31:30 IP:218.32.xxx.xxx 未訂閱
試試看 : select CustomerNo, SaleNo, Max(SaleDate) as LastSaleDate from Sale group by CustomerNo, SaleNo
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-05 22:48:15 IP:211.75.xxx.xxx 未訂閱
select * from Sale S where SaleDate=(select max(SaleDATE) from Sale b where a.SaleNo=b.SaleNo) 這樣就可以了。 Eric Lin
------
Eric Lin
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-03-05 22:52:29 IP:211.75.xxx.xxx 未訂閱
上面的錯了    select * from Sale S where SaleDate=(select max(SaleDATE) from Sale b where a.CustomerNo=b.CustomerNo) 這樣就才對。 Eric Lin
------
Eric Lin
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-03-06 09:10:33 IP:218.72.xxx.xxx 未訂閱
Eric039大大的方法我又试了一下,但反而出现一条recoder都没有了, Mickey大大的方法我试了一下,需要把select中的saleNo去掉就可以了(否则就会出现同一客户所有资料都会show出来),而且如果该客户即使没有交易也不会出现Null的问题,只是以上方法都不能show出saleNo这一栏位。有些美中不足。 也许本来就只能做到这一步吧。 谢谢各位大大的回应指教! Thank you very much! 發表人 - luowy651 於 2004/03/06 12:09:58 發表人 - luowy651 於 2004/03/06 16:38:58
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-03-07 00:47:25 IP:203.70.xxx.xxx 未訂閱
如果連一筆資料也沒有..請確定你的DATE欄位的時間單位, 一般如果是存年/月/日..應該沒有問題 但如果有分秒等很小的單位..就要注意了! 類似Float變數 不能用"="來比較兩變數是否相等     永遠追不上技術更新的速度
------
星期一,二...無窮迴圈@@
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-03-07 08:54:13 IP:218.72.xxx.xxx 未訂閱
引言: 如果連一筆資料也沒有..請確定你的DATE欄位的時間單位, 一般如果是存年/月/日..應該沒有問題 但如果有分秒等很小的單位..就要注意了! 類似Float變數 不能用"="來比較兩變數是否相等 永遠追不上技術更新的速度 < face="Verdana, Arial, Helvetica"> 确实如Pgdennis大大所说,我的date栏位中有分秒,谢谢!
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-03-07 09:02:08 IP:218.163.xxx.xxx 未訂閱
可能的話 參考這一篇 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=44784 用cast轉 我想到的做法是先用 year(CDATE),month(CDATE),day(CDATE)分別轉成字串 再組合起來轉為日期 或是在前端dataset的onfilter事件中處理
deity
尊榮會員


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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-03-07 12:24:35 IP:218.15.xxx.xxx 未訂閱
你好:试试以下做法 select * from Sale.db where SaleDate in(select max(SaleDate) from Sale.db group by CustomerNo) 应该可以达到你所要的效果 ——行径窄处,留一步与人行——
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-03-07 20:52:57 IP:61.164.xxx.xxx 未訂閱
引言: 你好:试试以下做法 select * from Sale.db where SaleDate in(select max(SaleDate) from Sale.db group by CustomerNo) 应该可以达到你所要的效果 ——行径窄处,留一步与人行——
感谢Deity大大,这正是我所想要的,更妙的是只要在一个table中就可实现多个栏位的显示,实在厉害,同时也感谢以上诸位大大的指教,开阔了我的思路,令我受益很多!如Eric039大大的方法会出现NULL,但在另一处我也正需要这个功能 Thank you very much! 發表人 -
系統時間:2024-07-01 3:42:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!