請問如何用SQL語法撈出每一個客戶的最後一次交易時間

請問大大,該如何下SQL語法,比如我有100個客戶,但我要只要列出這100個客戶的最後一次跟我交易的時間,不知道該如何下呢?


客戶交易日期
客戶A2010/01/01
客戶B2010/01/02
客戶B2010/01/03
客戶C2010/01/04
客戶B2010/01/05
客戶C2010/01/06
客戶A2010/01/07


最後我只要列出 ,每一個客戶最近一次交易的記錄

客戶A 2010/01/07
客戶B 2010/01/05
客戶C 2010/01/06
.................


謝謝您

不好意思,忘了說明
我的資料庫為 MSSQL 2008 
客戶及日期型態都是 nvarchar 型態
文章關鍵字
資料庫廠牌、版本、資料型態 這些都有差
綠手指
ccy2005 wrote:
請問大大,該如何下S...(恕刪)


這會很難嗎? 交易時間 誰會設成 nvarchar ?

SELECT 客戶, MAX(交易時間)
FROM 資料表名稱
GROUP BY 客戶
Nikon D90(MB-D80) + 17-55 + 28-70 + N35.2 + N50.4 + SB-800(SD-8A) + T124

Rone_Chen wrote:
這會很難嗎? 交易...(恕刪)

這會很難嗎? 交易時間 誰會設成 nvarchar ?

現在就是發生了,客戶的交易時間,就是用nvarchar 因為他說他是從EXCEL 匯進來的,
所以預設成純文字匯進來...
那現在應該要怎麼下呢?

Rone_Chen wrote:
這會很難嗎? 交易時...(恕刪)


你不知道很多系統轉進來都用NV,
有的時間還不補0

2011/3/4有的系統2011/01/02
你覺得不問清楚排序會對嗎?
綠手指
ccy2005 wrote:
從EXCEL 匯進...(恕刪)


SQL 匯入時, 在 "轉換" 的地方可以設定匯進的資料型態 (預設為 nvarchar, 可以自己改成 varchar 或 datetime)
(在 EXCEL 中, 欄位的 "儲存格格式" 也可以設成 "日期" 格式, 若是 .csv 檔, 就當我沒說過) 就算資料錯亂了, 只要格式對了, 還可以用 CAST 與 CONVERT 指令將 nvarchar 的資料轉成 "日期" 格式 那就可以去比較日期的大小...
Nikon D90(MB-D80) + 17-55 + 28-70 + N35.2 + N50.4 + SB-800(SD-8A) + T124

tcc7 wrote:
你不知道很多系統轉進...(恕刪)


1. 那表示轉資料的人, 沒談好轉入格式, 該打...
2. 那表示對 字串函數 和 型別轉換函數 不夠熟
請參考 CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

樓主舉的格式很正常呀 指令就給他下下看又無妨...


Nikon D90(MB-D80) + 17-55 + 28-70 + N35.2 + N50.4 + SB-800(SD-8A) + T124
ccy2005 wrote:
交易時間 誰會設成 nvarchar ? ...(恕刪)


這行混久了,小從PG大到PM都有可能會
Rone_Chen 正解,這個東西應該不用上來問吧,不用心
Rone 大大的寫法就是正解,不過我還是建議樓主把那個欄位型態改變一下

因為若不是用時間格式,資料可能會跑出[2011/02/30]這種不合理的資料

當你下 Convert 指令的時候會出現錯誤訊息

或是當你在挑選最大值的時候,你認為[2011/4/10]和[2011/12/5]哪一個是較大值呢?

PS:我是指不加 Convert 指令去做判斷的話
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!