2016-08-08 8 views
-1

約25年前、私はSQLを学びました。これは、今、私を助けていません:)GROUP BYを使用したアクセスエラーのSQL

をAccessで、私は非常に単純なクエリがあります。しかし

SELECT DISTINCT Bank.BankID, Bank... etc 

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を使用するように、重複レコードを除外したいが私が望むデータを得るために、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 

しかし、今、私は「あなたは、集計関数の一部として指定された式 『TransactionFile』を含まないクエリを実行しようとしました」にErrorMessageを取得します。 私がGROUP BY Bank.BankIDだけの場合、私はBank.BankNameで同じメッセージを受け取ります。

私はここで何が欠けていますか? ありがとう!

+0

トランザクション・ファイルを処理する方法を教えてください。他のすべてが区別され、3つのトランザクションファイルがある場合は、1行または3行を表示しますか? –

+0

ただ1行。私は、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

ああ...私の問題の解決方法はありますか?残りのデータに違いがある場合は、その行に含まれるTransactionFileを確認したい。 – Karin

+0

@カリン。 。 。私はあなたがサンプルデータと希望の結果で別の質問をするべきだと思います。 –