2017-08-24 9 views
0

JOINを使用しているとき、私は、このようなSQLコード持っているすべての列を選択します。私はこのエラーを取得するINNERが

SELECT 
    TB_DataProperti.*, 
    TBL_Rating.ISNULL(AVG(Rating), 0) AverageRating 
FROM 
    TB_DataProperti 
INNER JOIN 
    TBL_Rating ON TB_DataProperti.Kode_Properti = TBL_Rating.Kode_Properti 
GROUP BY 
    TB_DataProperti.JudulListing 
ORDER BY 
    AverageRating DESC 

を:

Msg 8120, Level 16, State 1, Line 3
Column 'TB_DataProperti.Kode_Properti' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

私が持っているので、私はちょうど、*を使用してすべてのデータ列を選択します多くの列

+1

1 '*'は悪です。それを使用しないでください。 2. https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sqlを参照してください。 -query – Strawberry

+4

このエラーは、内部結合によって引き起こされたものではなく、グループによって発生しています。グループを使用する場合は、グループ内の列を選択するか、または集計関数(最小/最大/平均/平均)を選択することができます – Luc

答えて

0

問題1つのテーブルとグループの集計関数を別のテーブルで使用しようとしています。ルールは別の列で集計関数を使用している場合ですその列はグループで使用する必要があります。これを試してみてください。これは便利だと思っています。

SELECT 
     TB_DataProperti.*, 
     ISNULL(AVG(TBL_Rating.Rating), 0) over (partition by TBL_Rating.Kode_Properti) as AverageRating 
    FROM 
     TB_DataProperti 
    INNER JOIN 
     TBL_Rating ON TB_DataProperti.Kode_Properti = TBL_Rating.Kode_Properti 
    ORDER BY 
     AverageRating DESC 
+0

おかげで兄弟..私のために働いています.. –