2015-07-29 26 views
9

Ich muss Details aus der DB abrufen. Irgendwas stimmt nicht in meinem Code? DieseORA-01791: kein ausgewählter Ausdruck

SELECT DISTINCT FNAME, LNAME, MEMBERORG, DAYCOUNT, TIMESTAMP, COUNT(FNAME) AS total,(SELECT COUNT(*) FROM REPORT_VIEW_PAGE) AS tot 
FROM REPORT_VIEW_PAGE 
WHERE ID = '68' AND TYPE = 'node' 
GROUP BY FNAME, LNAME, MEMBERORG, DAYCOUNT, TIMESTAMP 
ORDER BY TITLE ASC 

gibt mir eine Fehlermeldung:

ORA-01791: not a SELECTed expression 
01791. 00000 - "not a SELECTed expression" 
*Cause:  
*Action: 
Error at Line: 6 Column: 10 
+3

möglich Duplikat [Mit dem Schlüsselwort DISTINCT verursacht diesen Fehler: keine ausgewählter Ausdruck] (http://stackoverflow.com/questions/15275447/using-the-distinct-keyword-causes-this-error- not-a-selected-expression) – bish

+0

Ich habe distinct von query entfernt. Aber jetzt ist der Fehler "ORA-00979: kein GROUP BY Ausdruck 00979. 00000 -" kein GROUP BY Ausdruck " * Ursache: * Aktion: Fehler bei Zeile: 6 Spalte: 10' – drup

+1

Der neue Fehler sagt Sie, dass Sie versuchen, eine Spalte 'title' zu ​​sortieren, die Sie nicht auswählen. –

Antwort

26

Das Problem hier ist die ORDER BY Spalte TITLE nicht in der DISTINCT Abfrage ausgewählt wird. Da DISTINCT verwendet wird, versucht die SELECT Abfrage die resultset basierend auf den ausgewählten Spalten zu gruppieren.

ORDER BY Spalte ist hier nicht ausgewählt, es gewährleistet nicht die Eindeutigkeit auf der resultset und daher gilt es nicht gelten ORDER BY.

-1
SELECT DISTINCT FNAME, LNAME, MEMBERORG, DAYCOUNT, TIMESTAMP, total, tot 
FROM 
(
SELECT DISTINCT FNAME, LNAME, MEMBERORG, DAYCOUNT, TIMESTAMP, COUNT(FNAME) AS total,(SELECT COUNT(*) FROM REPORT_VIEW_PAGE) AS tot 
FROM REPORT_VIEW_PAGE 
WHERE ID = '68' AND TYPE = 'node' 
GROUP BY FNAME, LNAME, MEMBERORG, DAYCOUNT, TIMESTAMP 
ORDER BY TITLE ASC 
) 
Verwandte Themen