У меня есть таблица MYSQL, как эта
person giftaid postcode year amount
A 1 NULL 2010 10
A 0 XY123 2010 15
A 0 NULL 2011 10
A 0 NULL 2011 20
B 0 NULL 2010 20
B 0 NULL 2010 1
B 0 NULL 2011 30
C 1 NULL 2010 50
C 1 AB345 2011 80
И я хочу суммировать суммы, указанные каждым человеком в каждом году, но принять значения подарка и почтового индекса для этого человека из любого года . То есть Мне нужно
person ever_giftaided any_postcode year sum
A 1 XY123 2010 25
A 1 XY123 2011 30
B 0 NULL 2010 21
B 0 NULL 2011 30
C 1 AB345 2010 50
C 1 AB345 2011 80
Обратите внимание, что, хотя человек А не согласился с подарком в 2011 году, потому что он согласился в 2010 году, я рад заполнить столбец ever_giftaided
цифрой 1 за все годы и также принять любой ненулевой почтовый индекс .
Если я сделаю простой GROUP BY person, year
и использую MAX(giftaid) AS ever_giftaided, MAX(postcode) AS any_postcode
, то во втором ряду человек A получает 0
для ever_giftaided
и NULL для any_postcode
, потому что выражение group by не делает ' • Передача информации между группами по person
, но по группам из комбинаций person
и year
. Я мог бы просто GROUP BY person
, но тогда я не получаю суммы с разбивкой по годам. Так как я могу это сделать?