SELECT uid
, date
, SUM(USD) AS USD
, Ref_Nr
FROM my_table
GROUP
BY `date`, Ref_Nr, uid;
I dette tilfælde skal du have Ref_Nr i gruppen af for at få de ønskede resultater. uid, baseret på eksempeldata, er ikke nødvendig; men det er klogt altid at gruppere efter de ikke-aggregerede felter fra markeringen i gruppen efter. Den eneste grund til, at dette virker i mySQL, er, fordi de forlænger gruppen af ; de fleste andre RDBMS ville kaste en fejl om de manglende ikke-aggregerede felter i gruppen af. I version 5.7.5 og nyere er denne funktion deaktiveret som standard, hvor den tidligere var aktiveret som standard.
Med hensyn til hvorfor ref_nr er nødvendig i gruppen af:
MySQL-motoren mener, at du bare vil gruppere efter dato. Så alle ref_NR'erne bliver summeret sammen, og systemet vælger simpelthen en pr. dato, der skal vises; samme for uid; men da de alle er ens; du er ligeglad. Dette er tilfældet med ref_nr.
Så for at løse problemet skal du blot tilføje ref_nr
til gruppen af og ud af god fra tilføje UID
. Så det er godt fra til gruppe efter alle ikke-aggregerede kolonner fra vælg ind i gruppen efter.