1

次のような 2 つのテーブルがあります。

    Table1
    ________
StudentNumbers  ExamType
1234        1
2343        2   
3345        5
3454        1
5465        2
...
    Table2
    ________
StudentNumbers  ExamType      ExamDate  School  Area
1234        1       0825    warren  ny
1234        1       0829    north   nj  
1233        2       0921    north   nj              
2343        1       0922    warren  ny
2343          1                  0925     north   ny
...

特定の ExamType の Table1 のデータを使用して、Table2 から各学生の最大 ExamDate を見つける必要があります。私はこれまでこれを思いつきましたが、これは間違っているようです:

Select t2.StudentNumbers, t2.ExamType, max(t2.ExamDate), t2.School, t2.Area 
from Table2 as t2
Join Table1 as t1 on
t1.StudentNumbers = t2.StudentNumbers 
where t2.ExamType = 1

集計関数または group by 句のいずれにも含まれていないため、選択リストで無効としてエラーが発生しています

それは基本的に戻ってくるはずです:

StudentNumbers  ExamType      ExamDate  School  Area
  1234      1       0829    north   nj  
  2343          1                  0925     north   ny
4

3 に答える 3

1

または別の集約関数を使用する場合max()、結果セット内の他のフィールドをグループ化する必要があります。

Select t2.StudentNumbers, t2.ExamType, max(t2.ExamDate), t2.School, t2.Area 
from Table2 as t2
Join Table1 as t1 on
t1.StudentNumbers = t2.StudentNumbers 
where t2.ExamType = 1
group by t2.StudentNumbers, t2.ExamType, t2.School, t2.Area

これにより、生徒、試験の種類、学校、地域ごとの最新の試験日がわかります。

于 2013-08-26T21:31:14.380 に答える
0

エラーは、何が間違っているかを正確に示しています

  1. xxx選択リストで無効です。つまり、列の選択に問題がありますxxx
  2. どちらにも含まれていないので
    • 集約関数_ MAX_SUMCOUNT
    • またはgroup by 句などGROUP BY xxx

したがって、その列を集計関数で使用するか、列をGROUP BY句に配置する必要があります。

ExamDateから各学生の最大値を見つける」だけでよいことを考えると、選択している列の多くがすでに含まれており、結合は不要であると思われ、クエリを次のように減らすことができます。Table2ExamTypeTable2

SELECT t2.StudentNumbers
    , MAX(t2.ExamDate) AS MaxExamDate
FROM Table2 AS t2
WHERE t2.ExamType = 1
GROUP BY t2.StudentNumbers
于 2013-08-26T21:41:02.770 に答える
0

You need to use either GROUP BY or change the aggregate to a window function (eg. MAX(t2.ExamDate) over (partition by t2.StudentNumbers, t2.ExamType).

BTW, as mentioned in some of the comments, considering the data in the first table is included in the second , the whole idea of the JOIN is not really useful.

于 2013-08-26T21:34:33.143 に答える