TF001 = 單別
TF002 = 單號
TF003 = 訂單項次序號
TF004 = 版次
TF005 = 訂單日期
利用 TF001 & TF002 & TF003 決定的情況下,可能會有多個版次 . 即 TF004 可能為 MULTI VALUE,
而由於可給使用者查詢訂單日期範圍, 例 : TF005 > 2011/11/01 AND TF005 < 2011/11/10
會挑選多筆在日期內的訂單資料,而我又必須只挑選同一筆單別.單號.項次序號 下版次為最小的版次 .
可能情況是
TF001 | TF002 | TF003 | TF004 | TF005
1101 1101001 0001 0002 2011/11/05
1101 1101001 0001 0003 2011/11/05
1101 1101002 0002 0003 2011/11/08
1101 1101003 0003 0001 2011/11/09
需剔除 第二筆資料, 因為存在兩個版次,
我試著
1 SELECT TF001,TF002,TF003,TF005,MIN(TF004)
2 FROM COPTF
3 GROUP BY TF001,TF002,TF003,TF005
可以得到正確的答案如下
TF001 | TF002 | TF003 | TF004 | TF005
1101 1101001 0001 0002 2011/11/05
1101 1101002 0002 0003 2011/11/08
1101 1101003 0003 0001 2011/11/09
然而因為表格還要查詢其他的欄位
TF006 = 訂單預交日
TF001 | TF002 | TF003 | TF004 | TF005 | TF006
1101 1101001 0001 0002 2011/11/05 2011/11/17
1101 1101001 0001 0003 2011/11/05 2011/11/14
1101 1101002 0002 0003 2011/11/08
1101 1101003 0003 0001 2011/11/09
這邊的意思是 再版次中修改了 訂單預交日的日期,而其他值不變,空值代表著不修改
在這個情況下,我做了下面查詢
1 SELECT TF001,TF002,TF003,TF005,TF006 ,MIN(TF004)
2 FROM COPTF
3 GROUP BY TF001,TF002,TF003,TF005 , TF006
得到下面結果
TF001 | TF002 | TF003 | TF004 | TF005 | TF006
1101 1101001 0001 0002 2011/11/05 2011/11/17
1101 1101001 0001 0003 2011/11/05 2011/11/14
1101 1101002 0002 0003 2011/11/08
1101 1101003 0003 0001 2011/11/09
並沒有辦法得到想要結果
又做了下面查詢
1 SELECT TF001,TF002,TF003,TF005,MIN(TF006) ,MIN(TF004)
2 FROM COPTF
3 GROUP BY TF001,TF002,TF003,TF005
得到
TF001 | TF002 | TF003 | TF004 | TF005 | TF006
1101 1101001 0001 0002 2011/11/05 2011/11/14
1101 1101002 0002 0003 2011/11/08
1101 1101003 0003 0001 2011/11/09
他將兩筆資料的值做比較而選取了第三版的TF006= 2011/11/14,並不?選擇第二版的 2011/11/17,出現了判斷錯誤,
想請問有哪種寫法可以得到正確的值嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.110.64.222
→
12/15 07:10, , 1F
12/15 07:10, 1F