2013-11-04 71 views
1

我在我的項目中使用了兩個表格。兩張表都在圖中顯示。項目是在2005年VB.net和SQL Server 2005vb.net中group by子句有問題

enter image description here

這裏是我的代碼:

SELECT 
    NorthGangotri.DName, NorthGangotri.DLName, NorthGangotri.Place, 
    NorthGangotri.add1 , donor_family_detail.* 
FROM 
    NorthGangotri, donor_family_detail 
WHERE 
    NorthGangotri.NGCode = donor_family_detail.NGCode 
GROUP BY 
    donor_family_detail.NGCode 

但是當我嘗試執行它給出以下錯誤

enter image description here

任何人都可以請幫助我。

SELECT DISTINCT NorthGangotri.DName, NorthGangotri.DLName, NorthGangotri.Place, 
NorthGangotri.add1 , donor_family_detail.* 
FROM NorthGangotri 
INNER JOIN donor_family_detail on NorthGangotri.NGCode = donor_family_detail.NGCode 

也應該使用join兩個表連接:

+0

'GROUP BY donor_family_detail.NGCode'將爲每個不同的'NGCode'值生成* 1 *行 - 但可以從* multiple *行派生,每個行對於DName,DLName,Place都有不同的值'等等。服務器不知道爲其他列選擇什麼值。 –

+0

[踢壞的習慣:使用舊式JOIN](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins。 aspx) - 老式*逗號分隔的表*樣式列表已停止使用ANSI - ** 92 ** SQL標準(**超過20年**前) –

回答

1

在您查詢,所以你或許應該刪除group by條款你是不是聚合的任何數據。

+0

然後我如何隱藏重複值? –

+0

嘗試'distinct'關鍵字[link](http://technet.microsoft.com/en-us/library/ms187831%28v=sql.105%29.aspx) – gzaxx

1

如果將Group By子句添加到查詢中,則在SELECT列表中有一定的限制。它只能包含屬於組或表達式集合的列。
第一個問題是,爲什麼您首先使用GROUP BY?您想在哪個方面對結果進行分組?然後在SELECT列表中添加想要分組的列,並根據需要添加聚合。

SELECT donor_family_detail.NGCodeNorthGangotri.DName, COUNT(*) 
FROM NorthGangotri, donor_family_detail 
WHERE NorthGangotri.NGCode = donor_family_detail.NGCode 
GROUP BY donor_family_detail.NGCode 

此返回行的(組合的表)由NGCode分組的數目。
請查看GROUP BY子句的文檔。它包含幾個有助於理解該主題的示例,並在將其轉換爲您正在嘗試解決的問題時支持您。