Voici ma requête SELECT:Oracle SELECT aide
SELECT
a.id_auto,
SUM(pozicane_dni * a.poplatok_denny + najazdene_km * a.poplatok_km) celkova_trzba
FROM Auta a
INNER JOIN (SELECT
id_auto,
(SUM(koniec_pozicania - zaciatok_pozicania)) pozicane_dni,
(SUM(najazdene_km)) najazdene_km,
zaloha
FROM Zakaznik GROUP BY id_auto) z
ON z.id_auto = a.id_auto
INNER JOIN (SELECT
id_auto,
poplatok_denny,
poplatok_km
FROM Auta_zaloha) az
ON az.id_auto = a.id_auto
GROUP BY a.id_auto;
Mais je reçois cette erreur:
ORA-00979: not a GROUP BY expression
Tout le monde sait où pourrait être le problème? Je suis un peu confuse. J'ai la clause GROUP BY partout où j'utilise la fonction d'agrégat SUM().
EDIT:
une chose, il cesse de fonctionner quand j'ajouter un cas où la requête:
SELECT
a.id_auto, a.poplatok_denny, a.poplatok_km,
CASE WHEN z.zaloha IS NULL THEN
(pozicane_dni * a.poplatok_denny + najazdene_km * a.poplatok_km)
ELSE
(pozicane_dni * az.poplatok_denny + najazdene_km * az.poplatok_km)
END
celkova_trzba
FROM Auta a
INNER JOIN (SELECT
id_auto,
(SUM(koniec_pozicania - zaciatok_pozicania)) pozicane_dni,
(SUM(najazdene_km)) najazdene_km,
zaloha
FROM Zakaznik GROUP BY id_auto, zaloha) z
ON z.id_auto = a.id_auto
INNER JOIN (SELECT
id_auto,
poplatok_denny,
poplatok_km
FROM Auta_zaloha) az
ON az.id_auto = a.id_auto
GROUP BY a.id_auto;
+1. N'était-ce pas simple? :) – Guru
Encore une chose, il a cessé de fonctionner quand j'ai ajouté un CAS QUAND à la requête :( –
Même problème: Vous devez agréger sur l'expression, par exemple quelque chose comme "SUM (CASE WHEN ... END) celkova_trzba", si Oracle permet une telle syntaxe – Heinzi