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

請教一個棘手的 SQL 語法

尚未結案
ju1977
一般會員


發表:9
回覆:9
積分:3
註冊:2002-07-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-09 15:34:34 IP:211.22.xxx.xxx 未訂閱
Table A(廠商基本資料) 廠商編號 廠商 A9001 浩宇 A9012 翰羚 B8910 志群 Table B(訂貨資料) 時間 廠商編號 數量 2004/9/2 10:00 A9001 91 2004/9/2 10:30 A9012 67 2004/9/2 14:30 B8910 100 2004/9/4 9:45 A9001 95 2004/9/4 11:30 A9012 77 2004/9/4 11:30 B8910 98 2004/9/7 8:25 A9001 90 2004/9/7 8:26 A9012 80 2004/9/7 13:50 B8910 95 2004/9/8 9:00 A9001 91 2004/9/8 13:30 A9012 77 2004/9/8 14:00 A9001 55 <組合成醬結果> 廠商 前一天訂購總量 前十天內訂購總量 前十天內數量第一大(時間) 前十天內數量第二大(時間) 前十天內數量第三大(時間) 浩宇 146 422 95(2004/9/4 9:45) 91(2004/9/2 10:00) 91(2004/9/8 9:00) 翰羚 77 301 80(2004/9/7 8:26) 77(2004/9/4 11:30) 77(2004/9/8 13:30) 志群 0 293 100(2004/9/2 14:30) 98(2004/9/4 11:30) 95(2004/9/7 13:50) 查詢時間以2004/9/9為依據 前一天:2004/9/8 前十天內:2004/8/30~2004/9/8 DataBase: Oracle 請幫幫忙解一下語法如何寫?? 3Q~~~
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-09 22:35:41 IP:218.32.xxx.xxx 未訂閱
ju1977 妳好: 你是否有想法 ? 如何解 ? 是否須考慮資料量 ? 是否想用 Stored Procedure 去實現 ?
likush
高階會員


發表:5
回覆:235
積分:103
註冊:2002-10-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-10 20:03:46 IP:218.163.xxx.xxx 未訂閱
小弟建議,有錯請指正 可考慮 select a.廠商,(select sum(數量) from tableB b where b.廠商=a.廠商 and 時間='2004/09/02') as '前一天訂購總量' from tableA a 之類的語法逹到需求,但如Mickey兄所言,該語法如果遇上資料量大時,查詢時間將相當可觀,故端看您的考慮來決定,至於要逹成你所要的結果,相信直接在程式上作控制應也可以。但以Mickey兄所言,直接以stored procedure 的方式,或借由產生暫存資料表的方式,來處理都可逹到。 ========================= 讀萬卷書~不如來K.TOP走一遭 =========================
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-10 20:21:11 IP:61.221.xxx.xxx 未訂閱
ju1977 你好: 一開始必須先提醒你,若是作業請自己先做好功課在發問唷!! 解法: 1.先寫出 搜尋各廠商id及名稱的sql語法 2.寫出前一天訂購總量 依照各廠 並 group by 過 3.前十天內訂購總量 依照各廠 並 group by 過 4.前十天內數量第一大(時間) 5.前十天內數量第二大(時間) 6.前十天內數量第三大(時間) -------------------------------------------------- 總結: 你會發現,除了4.5.6.是要搜尋2個欄位的其他都是一個 所以可以用 select 廠商id,廠商名稱, B_COUNT=isnull((select SUN(數量) from B where b.date = 條件天數 1 and a.廠商id=b.廠商id),0), BTEN_COUNT=isnull((select SUN(數量) from B where b.date between 條件天數-10 and 條件天數 and a.廠商id=b.廠商id),0) from a group by 廠商id,廠商名稱 這樣可以得到1.2.3.的總和 至於 4.5.6. 請你動手吧!!
------
======================
昏睡~
不昏睡~
不由昏睡~
系統時間:2024-06-29 13:29:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!