  | 
				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 文章: 4252 來自: 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
 
不知道這樣可不可以... | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |