• 4

請教SQL 語法問題

最近一筆資料?
這樣就好啦~
簡單好用又快速
SELECT * FROM 資料表 WHERE 進貨日期 = (SELECT MAX(進貨日期) FROM 資料表 )

如果考慮到當天有很多次進書的話的問題:

SELECT * FROM 資料表 WHERE 進貨日期 IN (SELECT MAX(進貨日期) FROM 資料表 ))

如果序號是以最新一筆資料為最大值的話,且戶不會輸入之前的日期做之前紀錄~ 那就簡單多了

SELECT * FROM 資料表 ORDER BY 序號 DESC LIMIT 1


上面中文字你自己替換適合的名稱

這樣就好啦~

電腦都會幫你判斷

是誰設計的把日期欄位變成字元型態的?
抓出來打~
把他變成 DATE 的型態啦~
自刪... 方法有問題
還差一點點,要有 15 個字

這樣應該可以....
主要還是使用sub-query的概念
不過這樣做有一個風險 如果進貨日期重複 那就不會是最後一筆資料
所以這樣的語法成立的前提是....客戶名稱+進貨日期不會重複

SELECT RTRIM(MA003) + '-' + RTRIM(MA001) AS 廠商品號, MA012 AS 進貨日期
FROM dbo.MOCMA a inner join (select 客戶名稱 , max(進貨日期) from MOCMA group by 客戶名稱) as b on a.客戶名稱=b.客戶名稱 and a.進貨日期=b.進貨日期

My Flickr: www.flickr.com/photos/wuwaiter/

boneyhsu wrote:
我要的結果是秀出每一家客戶最後1筆的進價資料喔(所以應該結果只有2筆而已)


如果照小弟直接的寫法,我的做法是:
1.先找出到底有多少間書局,數量找出來,名撐也要有,這邊前提是你有建立書店資料表,裡面有書店名稱等資料,就如同客戶資料一樣,一般都會建

2.使用迴圈,次數為書店數量

3.迴圈內使用select指令,條件為書店名稱然後將最新日期找出來

4.大功告成

語法的話,就交給大大自己去煩惱了,畢竟程式難的就是構思而已
不過可以的話,日期欄位還是設成datetime或是date吧!
不設也是可以,不過只是給自己日後找麻煩!
簡單就是一種幸福,幸福也許只是簡單
eiway wrote:
如果照小弟直接的寫法...(恕刪)


你這樣做法也沒有問題,假使這系統剛好只有一兩個人操作那絕對OK
但是如果是在 Web 上面開放給幾千幾萬人用的
又運氣不好那公司生意很好,客戶一堆
只要用 apache 內建 ab 一下,那台 Server 大概就垮了
boneyhsu wrote:
請教各位先進,我有一...(恕刪)


我給你的建議是最好加上 auto pk
不然你沒有辦法精確判斷到甚麼是真正的最後一筆資料
基本上13樓的寫法是正確的
但是最大的問題是你的日期並不包含"時間"

也就是說同一個客戶同一天有兩筆資料
程式就不知道哪一個是最後了..
電腦工程師,有問題可以找我討論 Raxel
raxel wrote:
基本上13樓的寫法是...(恕刪)


感謝各位先進們的指導~
日期用成字元格式也不是我設計的
而且table裡面也沒有自動編號欄位
我是使用鼎新erp系統的資料庫

不過依照我目前的狀況
同一天進貨的產品是不會有第二筆的情形出現的..
版上高手如雲~
受教了


試試看這樣如何

select a.MA003||'-'||a.MA001 as PRO_ID,a.MA012 as P_IN_DATE from dbo.MOCMA a,
(select MA003||'-'||MA001 as PRO_ID,MAX(MA012) P_IN_DATE GROUP BY MA003||'-'||MA001) b
where a.PRO_ID=b.PRO_ID and a.P_IN_DATE=b.P_IN_DATE
group by a.PRO_ID,a.P_IN_DATE
order by a.PRO_ID

這樣應該差不多了
後面的GROUP BY是為了避免同天有相同的"廠商代號-產品品號"存在而出現兩筆

.
Select 客戶名稱,進貨名稱,MAX(進貨日期),進貨數量,進貨單價
from XX_table
group by 進貨名稱

這是針對進貨名稱和客戶名稱為一對一

  • 4
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?