GROUP_CONTACTの使用に構文上の問題があります。
次のようなSQLステートメントを使用します。
SELECT
s.school_code
, s.school_name
,st.subject
,sg.subgroup
,GROUP_CONCAT(IF(r.year=2012,a.proficiency_index,NULL)) AS pi_2012
,GROUP_CONCAT(IF(r.year=2013,a.proficiency_index,NULL)) AS pi_2013
FROM
ayp_data a
INNER JOIN
report_year r ON
a.report_year_id = r.id
INNER JOIN
school s ON
a.school_code_id = s.id
INNER JOIN
sub_group sg ON
a.subgroup_id = sg.id
INNER JOIN
`subject` st ON
a.subject_id = st.id
GROUP BY
report_year_id,
s.school_code
, s.school_name
,st.subject
,sg.subgroup
HAVING
s.school_name = 'Moody Elementary School' AND
`subject` = 'Mathematics' AND
`subgroup` = 'All Students'
私は次のような結果を得ています:
SCHOOL_CODE SCHOOL_NAME SUBJECT SUBGROUP PI_2012 PI_2013
0065 Moody Elementary School Mathematics All Students 9.640000343322754 (null)
0065 Moody Elementary School Mathematics All Students (null) 10.920000076293945
2つの行を1つにマージし、null以外のフィールド値PI_2012とPI_2013を同じ行に配置したいと思います。
GROUP_CONTACTでそれができると思いました。しかし、私が思っていたようには機能していません。
GROUP_CONCATを使用してこれらのフィールドをマージするにはどうすればよいですか?
または、これを行うためのさらに賢い方法はありますか?
私は完全なスキーマを持っており、SQLFiddleでクエリを実行します。