Witajcie!
Mam pewien problem z napisaniem odpowiedniego zapytania do bazy danych. Otóż, mam zużycie listy materiałów i komponentów produkcyjnych, które chciałbym pokazać w skali miesiąca. Zużycie jest raportowane z dokładnością do tysięcznej części minuty. Do tej pory doszedłem do etapu, gdzie sumuję zużycie w taki sposób, że jeżeli mam zużycie więcej, niż raz w danym miesiącu, to miesiąc ten powtarza się tyle razy, ile jest wystąpień w historii ruchów raportowych.
Zapytanie natomiast wygląda tak:
[CODE]
SELECT
date_ar_man AS “Dates table”,
ll_artnr AS “PART NUMBER”,
ll_std_pris AS “STD PRICE”,
SUM(ll_saldo_delta) AS “QUANTITY”
FROM monitor.LAGERLOGG
LEFT OUTER JOIN monitor.artikel on artikel.art_artnr = lagerlogg.ll_artnr
LEFT OUTER JOIN monitor.DATUM_PERIOD on DATE(lagerlogg.ll_datum) = DATE(datum_period.date_datum)
WHERE
ll_stalle = 1
AND ll_datum > 20160101
AND lagerlogg.rut_id NOT IN (265,110,122,324,47,516,486,40,242)
AND artikel.art_typ = 1
AND DATUM_PERIOD.date_datum > 20160101
GROUP BY
ll_datum,
date_ar_man,
ll_artnr,
ll_std_pris
ORDER BY
ll_artnr ASC
[/CODE]
Już wyjaśniam, dlaczego tam jest złączenie tabeli z innymi datami - w niej jest podział “rok miesiąc” w jednej kolumnie, inaczej używałem “YEAR(ll_datum), MONTH(ll_datum)” i miałem te dane w osobnych kolumnach, co nie jest mi do końca na rękę, ale jeżeli nie będzie innej rady, to przeżyję to.
Niemniej, w jaki sposób powinienem sumować te wartości? Ma ktoś jakiś pomysł może?
Ach, byłbym zapomniał. Baza stoi na AnySQL (o ile się orientuję, to jest SAP-owska baza).
Pozdrawiam!
EDIT:
Poradziłem sobie z pomocą koleżanki - wystarczyło usunąć “ll_datum” z funkcji grupującej.