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

銷貨單資料,如何用SQL取得各[產品編號]之[數量]最大的單號?

尚未結案
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-25 16:09:03 IP:61.218.xxx.xxx 未訂閱
請教各位前輩    以下的 Table 使用MS SQL 2000 銷貨單資料,如何用SQL取得各[產品編號]之[數量]最大的單號? 如下,因資料很多所以那種方式較快?? 謝謝各位前輩
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-25 16:16:47 IP:61.218.xxx.xxx 未訂閱
Select  *  from Table1    Where 單號= ( Select Top 1  單號 From Table1 As Ta    Where 產品編號= Table1.產品編號    Order by 數量 desc )    這樣的寫法好嗎??,是否有較好的方法??    < >< >< >< >
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-26 00:22:35 IP:61.71.xxx.xxx 未訂閱
引言: Select * from Table1 Where 單號= ( Select Top 1 單號 From Table1 As Ta Where 產品編號= Table1.產品編號 Order by 數量 desc ) 這樣的寫法好嗎??,是否有較好的方法?? < >< >< >< >
select max(單號) as maxno from table1 where 產品編號= (Select distinct 產品編號 From Table1) 發表人 - P.D. 於 2005/02/26 00:27:10
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-28 16:45:18 IP:61.218.xxx.xxx 未訂閱
引言: select max(單號) as maxno from table1 where 產品編號= (Select distinct 產品編號 From Table1)
謝謝 P.D. 前輩教導 但會出現以下錯誤 ?? 伺服器: 訊息 512,層級 16,狀態 1,行 7 子查詢的傳回值不只一個。這種狀況在子查詢之後有 =、!=、<、<=、>、>= 或是子查詢作為運算式使用時是不允許的。 但又學到了 distinct 這個指令,我試試看,謝謝!!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-28 17:27:33 IP:61.71.xxx.xxx 未訂閱
sorry, 臨時沒有經實證就給你, 試試以下 select 產品編號, max(單號) as maxno from table1 group by 產品編號
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-28 17:27:46 IP:202.62.xxx.xxx 未訂閱
您好﹗    試試這樣﹕ select max(單號) as maxno from table1 where 產品編號 In (Select distinct 產品編號 From Table1) ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-28 17:30:02 IP:61.71.xxx.xxx 未訂閱
引言: 您好﹗ 試試這樣﹕ select max(單號) as maxno from table1 where 產品編號 In (Select distinct 產品編號 From Table1)
插花一下, 這樣寫法是可以過, 但只會選出在 in 範圍內一筆最大號
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-02-28 17:35:50 IP:202.62.xxx.xxx 未訂閱
引言:
引言: 您好﹗ 試試這樣﹕ select max(單號) as maxno from table1 where 產品編號 In (Select distinct 產品編號 From Table1)
插花一下, 這樣寫法是可以過, 但只會選出在 in 範圍內一筆最大號
呵呵﹐受教受教﹗ 感謝P.D前輩指正﹐只看錯誤提示做的更正﹐沒有仔細看清題目﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-02-28 17:54:31 IP:61.218.xxx.xxx 未訂閱
謝謝各前輩 因該是我沒說清楚!! 我是要取得各[產品編號]之中[數量]最大,的那一筆單號? 並不是最大單號?? 謝謝各位前輩!!
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-02-28 18:11:30 IP:202.62.xxx.xxx 未訂閱
您好﹗    試試看﹕ Select 產品編號, 單號, Max(數量)As 最大數量 From Table Group By 產品編號    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-03-01 12:06:30 IP:61.218.xxx.xxx 未訂閱
引言: 您好﹗ 試試看﹕ Select 產品編號, 單號, Max(數量)As 最大數量 From Table Group By 產品編號 ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
謝謝前輩!! 有錯誤訊息如下: 伺服器: 訊息 8120,層級 16,狀態 1,行 1 資料行 'Table1.單號' 在選取清單中無效,因為它並未包含在彙總函數或 GROUP BY 子句中。 如加上 GROUP BY 產品編號 ,單號 會全都部單號都出來
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-03-01 12:58:19 IP:202.62.xxx.xxx 未訂閱
您好﹗    試試看﹕ Select 單號, 產品編號 From Table1 Where 數量 In (Select Max(數量) As 最大數量 From Table1 Group By 產品編號)    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
Brian77
中階會員


發表:8
回覆:114
積分:94
註冊:2002-05-17

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-03-01 13:07:11 IP:61.61.xxx.xxx 未訂閱
SELECT A.* FROM Table1 A, (
  SELECT 產品編號,MAX(數量) AS Q1 FROM Table1
  GROUP BY 產品編號) B
  WHERE A.產品編號=B.產品編號 AND A.數量=B.Q1
如果該產品有兩張單子具有同樣的最大數量, 那麼會這兩張單子都會出現 如果在這種情況下只想出現單號較大的單子的話:
SELECT A.產品編號,MAX(A.單號) FROM Table1 A, (
  SELECT 產品編號,MAX(數量) AS Q1 FROM Table1
  GROUP BY 產品編號) B
  WHERE A.產品編號=B.產品編號 AND A.數量=B.Q1
  GROUP BY A.產品編號
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-03-01 15:58:17 IP:220.135.xxx.xxx 未訂閱
Hi jeffreck 大大你好, 試試這個

Select Top 1 with ties 產品編號, sum(數量) as 數量 
from Table1
group by 產品編號 
order by 2 desc
我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-03-02 10:56:11 IP:61.71.xxx.xxx 未訂閱
引言: Select 產品編號, 單號, Max(數量)As 最大數量 From Table Group By 產品編號 有錯誤訊息如下: 伺服器: 訊息 8120,層級 16,狀態 1,行 1 資料行 'Table1.單號' 在選取清單中無效,因為它並未包含在彙總函數或 GROUP BY 子句中。 如加上 GROUP BY 產品編號 ,單號 會全都部單號都出來
首先要先瞭解 group by 的語法 select field1, field2, max(field3) as newname ... max() 是集總函數, 不列入 group by 的範圍 其他 select 之後的欄位都是 group by 的條件, 所以有幾個 field 就必須要加在 group by 之後, 如 group by field1, field2 group by 就好像是 filter的條件, 也就是說會把 field1 field2視為一組 條件, 凡符合這樣組合的條件就視同為一筆記錄, 再由 max(欄位) 內的挑選最大值, 所以你要數量 則是 max(數量) 所以你的錯誤是發生在 select f1, f2 .... group by f1 (不足 f2) 改為 select f1, f2, max(f3) ... group by f1, f2就不會有問題 而你要的目的以這樣的做法應該就可以達到了!
系統時間:2024-05-20 1:03:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!