Gegeben zusammenfassen, dass ich eine Tabelle von Benutzerdaten enthält, wie folgt aus:Wie in PL/SQL
userID calltime result
1 10:20 1
1 11:00 2
1 11:30 1
2 9:30 1
2 11:00 1
3 10:00 1
3 10:30 2
3 11:00 1
3 11:30 2
Jetzt möchte ich es so zusammenfassen:
userID result1 result2
1 2 1
2 2 0
3 2 2
(total) 6 3
für mich, Zusammenfassung Benutzerdaten sind in Ordnung, aber wie kann ich die Gesamtzeile in einer Abfrage hinzufügen? UNION funktioniert damit nicht.
Vielen Dank dafür.
EDIT: das ist meine aktuelle Abfrage, natürlich funktioniert es nicht:
PROCEDURE P_SUMMARIZE_CALL
(
pStartDate IN DATE,
pEndDate IN DATE,
SummaryCur OUT MEGAGREEN_CUR
)
IS
BEGIN
OPEN SUMMARYCUR FOR
SELECT USERID, TOTALCALLS,CONNECTEDCALLS,RATE,NOANSWER FROM
(((SELECT USERID,
count(CALLID) AS TOTALCALLS,
sum(CONNECTED) as CONNECTEDCALLS,
sum(CONNECTED)/count(CALLID)*100 || '%' AS RATE,
(count(CALLID) - sum(CONNECTED)) AS NOANSWER
FROM CALLLOGS
WHERE STARTTIME BETWEEN pStartDate AND pEndDate
group by USERID) c
FULL OUTER JOIN USERS u
ON c.USERID = u.ID)
UNION ALL
(SELECT NULL,count(CALLID) AS TOTALCALLS,
sum(CONNECTED) as CONNECTEDCALLS,
sum(CONNECTED)/count(CALLID)*100 || '%' AS RATE,
(count(CALLID) - sum(CONNECTED)) AS NOANSWER
FROM CALLLOGS
WHERE STARTTIME BETWEEN pStartDate AND pEndDate group by NULL));
END;
Gibt es einen Grund, warum Sie einen 'FULL OUTER JOIN' verwenden? Dies macht wahrscheinlich mehr Arbeit als nötig, da es aussieht, dass Sie eigentlich einen 'RIGHT OUTER JOIN' wollen, es sei denn, ich täusche mich. Und es wird eine ganze Menge von Null-Zeilen zurückbringen, da Sie c.USERID anstelle von u.ID –
verwenden, was ich wollte. Wenn in Gridcontrol angezeigt wird, wird der Nullwert in 0 konvertiert, wenn ich RIGHT OUTER JOIN nicht verwende, wird der Benutzer, der keinen Anruf hat, ignoriert. – Vimvq1987