2016-08-08 20 views
-1

大約25年前,我學習了SQL。這並不能幫助我現在:)使用GROUP BY訪問錯誤中的SQL

在訪問我有一個非常簡單的查詢:

SELECT Bank.BankID, Bank.BankName, Address.StreetName, Address.StreetNumber, Address.ZipCode, Address.City, Bank.TransactionFile 
FROM Bank 
LEFT JOIN Address ON Bank.[BankID] = Address.[BankID] 

現在我想,所以我使用DISTINCT排除重複記錄:

SELECT DISTINCT Bank.BankID, Bank... etc 

然而,我不希望TransactionFile成爲DISTINCT選擇的一部分,以獲得我想要的數據。 所以我想使用GROUP BY語句來代替:

SELECT Bank.BankID, Bank.BankName, Address.StreetName, Address.StreetNumber, Address.ZipCode, Address.City, Bank.TransactionFile 
FROM Bank LEFT JOIN Address ON Bank.[BankID] = Address.[BankID] 
GROUP BY Bank.BankID, Bank.BankName, Address.StreetName, Address.StreetNumber, Address.ZipCode, Address.City 

但現在我得到的errormessage的「試圖執行一個查詢,不包括指定表達式‘TransactionFile’作爲一個聚合函數的一部分。」 如果我只是GROUP BY Bank.BankID,我會在Bank.BankName上得到相同的消息。

我在這裏錯過了什麼? 謝謝!

+0

您想如何處理事務文件?如果其他所有內容都不相同,並且您有3個事務文件,您是否想要看到一行或三行? –

+0

只是一條線。我想完全忽略TransactionFile。 – Karin

+0

我想查看每條唯一的行,對於那些不同的記錄,我想查看TransactionFile數據。 – Karin

回答

1

不在GROUP BY中的所有列都需要處於聚合函數中。因此,要麼刪除Bank.TransactionFile,要麼使用匯總功能:

SELECT Bank.BankID, Bank.BankName, Address.StreetName, Address.StreetNumber, 
     Address.ZipCode, Address.City, MAX(Bank.TransactionFile) 
FROM Bank LEFT JOIN 
    Address 
    ON Bank.[BankID] = Address.[BankID] 
GROUP BY Bank.BankID, Bank.BankName, Address.StreetName, Address.StreetNumber, 
     Address.ZipCode, Address.City; 
+0

啊好吧...我的問題的任何解決方案?當其他數據有差異 – Karin

+0

@Karin時,我想查看該行中包含的TransactionFile。 。 。我想你應該問一個關於樣本數據和期望結果的問題。 –