台灣最大程式設計社群網站
線上人數
1240
 
會員總數:242274
討論主題:187364
歡迎您免費加入會員
討論區列表 >> MS SQL >> 請問如何將欄位的型態char轉換成int後,再比大小?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請問如何將欄位的型態char轉換成int後,再比大小?
價值 : 20 QP  點閱數:354 回應數:3

樓主

尹琇
門外漢
0 1
8 1
發送站內信

各位前輩好,我想要將資料庫中某個欄位找出最大值,

但後來發現當初建資料庫時該欄位的DataType是Char(10),

所以我直接用MAX(欄位)無法找出我需要的資料......



原始範例資料如下↓

購買日期   商店名稱   客戶名稱
20171101   萊爾富    甲先生
20171121   萊爾富    甲先生
20171106   全家     乙小姐
20171116   全家     乙小姐

需要撈出資料為購買日期最大的那一天↓

購買日期   商店名稱   客戶名稱
20171121   萊爾富    甲先生
20171116   全家     乙小姐



後來試著寫出下列語法,雖然在SQL Server中沒有顯示語法錯誤,但仍舊撈出全部的資料......






請各位前輩指導一下,非常感謝各位!




搜尋相關Tags的文章: [ MAX ] , [ CAST ] ,
本篇文章發表於2017-11-22 16:49
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

真的有點難
檢舉此回應
create procedure proc_test
as
create table #xxx( 購買日期 char(10),
   商店名稱 nvarchar(50),
  客戶名稱 nvarchar(50))
insert #xxx
select '20171101','萊爾富','甲先生'

insert #xxx
select '20171121','萊爾富','甲先生'

insert #xxx
select '20171106','全家','乙小姐'

insert #xxx
select '20171116','全家','乙小姐'



select max(購買日期),商店名稱,客戶名稱 from #xxx group by 商店名稱,客戶名稱
本篇文章回覆於2017-11-22 17:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

尹琇
檢舉此回應
感謝樓上前輩指導~!!!

後來又再持續找了許多前輩的解法,知道如果char裡面存的格式是YYYYMMDD就可以直接進行比日期大小,

然後也知道為什麼我用Group by依舊是撈出所有的資料。

參考這個網址→http://www.blueshop.com.tw/board/FUM20041006152735ZFS/BRD20050824171618BZW.html

裡面的說法就是,若我用原本我寫的SQL去撈資料,這樣的命令等於列出全部的記錄。

所以後來捨棄group by,決定改用子查詢的方式,寫出如下SQL就能結合兩個Table並查出我要的資料了。


本篇文章回覆於2017-11-23 16:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

一頁書
檢舉此回應
子查詢效率不用好,妳GROUP BY 不該有B002
SELECT DISTINCT
2 MAX(CAST(T01.B002 AS INT)) "購買日期",
MAX(T01.B002) "購買日期",
3 T00.A078 "商店名稱",
4 T00.A001 "客戶名稱",
5
6 FROM TableA AS T00
7 LEFT JOIN TableB AS T01 ON T00.A001 = T01.B003
8 LEFT JOIN TableC AS T02 ON T01.B031 = T02.C002 AND T01.B057 = T02.C044
9
10 group by A001,A078
11
12 ORDER BY 商店名稱,客戶名稱
本篇文章回覆於2017-12-22 11:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.