 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 1 樓
|
發表於: 星期二 一月 18, 2005 6:05 pm 文章主題: select Group By 語法小發現 |
|
|
以前對於用 select 再加上GROUP BY 時, 想要多抓一些欄位來顯示時, 常常受限於 group by 的欄位, 例如:
產品編號的數量統計資料
select rece_dat.pro_no,sum(rece_dat.qty) as sumqty from rece_dat group by rece_dat.pro_no
但如果想要順便顯示產品名稱時就會出現問題
這樣是不合法的語法:
select rece_dat.pro_no,product.name,sum(rece_dat.qty) as sumqty from rece_dat left join product on rece_dat.pro_no=product.pro_no group by rece_dat.pro_no
但今天突然想到其實也可以這樣做就可以了.
select rece_dat.pro_no,max(product.name) as name,sum(rece_dat.qty) as sumqty from rece_dat left join product on rece_dat.pro_no=product.pro_no group by rece_dat.pro_no
真是的, 要是早點想到, 也不須要另外寫一堆程式來處理這個問題. 希望對你們有幫助. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案.
garfield 在 星期四 一月 20, 2005 4:35 pm 作了第 1 次修改 |
|
回頂端 |
|
 |
ctcwu
註冊時間: 2003-09-01 文章: 6
第 2 樓
|
發表於: 星期三 一月 19, 2005 4:12 pm 文章主題: |
|
|
我也沒想到,謝謝!! |
|
回頂端 |
|
 |
syntech
註冊時間: 2003-05-16 文章: 4249 來自: Taipei,Taiwan
第 3 樓
|
發表於: 星期三 一月 19, 2005 4:17 pm 文章主題: |
|
|
套用一句最近常用的話:"我不能佩服您再多"  _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
goto-dream
註冊時間: 2004-05-11 文章: 909
第 4 樓
|
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 5 樓
|
發表於: 星期三 一月 19, 2005 10:35 pm 文章主題: |
|
|
goto-dream, 是遇到那一種 group by 的問題, 又如何解決的呢? _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
goto-dream
註冊時間: 2004-05-11 文章: 909
第 6 樓
|
發表於: 星期四 一月 20, 2005 2:26 pm 文章主題: |
|
|
跟你的問題是不一樣的.如下面的SQL敘述
Select A1,A2,A3,A4,A5,A6,SUM(E) AS E,SUM(F) AS F FROM Table1 Group By A1,A2,A3,A4,A5,A6
Group By A1,A2,A3,A4,A5,A6 太多欄位時,會有問題
就算在VFP8也一樣是......
剛開始我還以為我沒有安裝SP1.再來以為是SQL語法有問題...
後來刪除一各以上欄位時...發現到Group By太多欄位了....
左想又想.....
發覺可以這樣轉換
代碼: |
select A1,A2,A3,A4,A5,A6, E, F, ' ' as A7 FROM Table1 into cursor cur1
select cur1
scan
replace A7 with a2+a3+A4+A5+A6
endscan
Select A1,A7,SUM(E) AS E,SUM(F) AS F FROM cur1
Group By A1,A7 into cursor rptTable |
這樣就出來了......
方法是不是很笨~~~~.....沒關係...能出來.....先解決....... _________________ 福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!
想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.
愛作夢 |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 7 樓
|
發表於: 星期四 一月 20, 2005 4:34 pm 文章主題: |
|
|
那你的這個問題也一樣可以用我這個方法
Select A1,max(A2) as a2,max(A3) as a3,max(A4) as a4,max(A5) as a5,max(A6) as a6,SUM(E) AS E,SUM(F) AS F FROM Table1 Group By A1
這樣也會出來 ^^ _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
goto-dream
註冊時間: 2004-05-11 文章: 909
第 8 樓
|
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 9 樓
|
發表於: 星期五 一月 21, 2005 6:17 pm 文章主題: |
|
|
因為用了 group by 所以在select 後面的欄位清單是只能用group by 後面的欄位及用它內定的那些函數, 所以不能將沒在group by 所列出來的欄位加在 select 之後, 所以才用max( 欄位) 來將它合法化. 所以也不一定要用 max() , 用 min() 及其它函數也可以. 這樣了解吧! _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
BIN

註冊時間: 2004-07-22 文章: 94 來自: Tainan, Taiwan
第 10 樓
|
發表於: 星期一 一月 24, 2005 4:30 pm 文章主題: |
|
|
Select A1,A2+A3+A4+A5+A6 AS A7,SUM(E) AS E,SUM(F) AS F FROM Table1 Group By A1,A7 into cursor rptTable
不知道這樣可不可以... |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|