2017-04-22 7 views
0

私は自分のSQLクエリに問題があります。私はユーザーテーブルからすべての値を取得しようとしていて、今月ローンテーブルで収集したローンを合計しますが、クエリを実行するたびにエラーが発生しています。ここで最初のテーブルの値全体と2番目のテーブルのいくつかの値を選択して複数のテーブルを結合する方法

は、SQLクエリ

SELECT * FROM customer c 
    INNER JOIN(SELECT SUM(loan_amt) as lamt, disb_date, ac_no FROM loans GROUP BY ac_no) AS l ON c.cust_no=l.ac_no 

をしてくださいですが、私は間違って何をやっていますか?ありがとう。

+0

[table1に一致しないデータを保持しながら、table2の1 colのすべてのデータをtable1に結合するにはどうすればよいですか?](http://stackoverflow.com/questions/25094865/how-do-i-join-すべてのデータの1列目のテーブル2からテーブル1への保持中不一致) – mrtig

答えて

0

はこれを試してください:あなたはよりselectで複数の列を選択している

SELECT c.*,l.lamt FROM customer c INNER JOIN(SELECT SUM(loan_amt) as lamt, disb_date, ac_no FROM loans GROUP BY ac_no,disb_date) AS l ON c.cust_no=l.ac_no 
+0

@ KristikaTalwar、このエラーが発生しました:メッセージ8120、レベル16、状態1、行1 列'loans.disb_date'は集計関数またはGROUP BY句に含まれていないため、選択リストでは無効です。 –

+0

貴重な時間をいただきありがとうございます。 –

+0

私の編集をチェックしてください。選択リストからdisb_dateを削除するか、節でグループに追加する@fagbemiayodele – kritikaTalwar

0

group byです。だから:

SELECT c.*, l.lamt 
FROM customer c LEFT JOIN 
    (SELECT SUM(loan_amt) as lamt, ac_no 
     FROM loans 
     GROUP BY ac_no 
    ) l 
    ON c.cust_no = l.ac_no; 

私はまた、LEFT JOINに変更しました。あなたの質問には特に「すべての行」と書かれています。

+0

ありがとうございます。出来た。 –

+0

ローンテーブルから4行を追加すると、エラーが出力されます。私はそれらをグループ化し続けますか? –

+0

@fagbemiayodele。 。 。あなたは*新しい*質問として新しい質問をする必要があります。 –

0

私はGordon linoffに同意します。 group byにはサブクエリの選択部分にdisb_dateが含まれていないためです。ただし、グループに追加したくない場合は、正しい結果が得られない可能性があります。

私は特定の月のローンを回収したいのでdisb_dateが欲しいと思います。これは正しいです?もしそうなら、私はゴードンのソリューションにwhere句を追加します。これは、あなたの指定した月のために収集された貸付金の合計が表示されます

SELECT c.*, l.lamt 
FROM customer c LEFT JOIN 
    (SELECT SUM(loan_amt) as lamt, ac_no 
     FROM loans WHERE disb_date BETWEEN <insert date> AND <insert date> 
     GROUP BY ac_no 
    ) l 
    ON c.cust_no = l.ac_no; 

関連する問題