2015-07-29 11 views
9

Devo recuperare i dettagli dal DB. Qualcosa di sbagliato nel mio codice?ORA-01791: non un'espressione SELEZIONATA

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 

Questo mi dà un errore:

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

possibile duplicato [Utilizzando la parola chiave DISTINCT causa questo errore: non è un'espressione selezionata] (http://stackoverflow.com/questions/15275447/using-the-distinct-keyword-causes-this-error- non-a-selezionata-espressione) – bish

+0

Ho rimosso distinto dalla query. Ma ora l'errore è 'ORA-00979: non un'espressione GROUP BY 00979. 00000 -" non un'espressione GROUP BY " * Causa: * Azione: Errore riga: 6 Colonna: 10' – drup

+1

Il nuovo errore indica tu che stai cercando di "ordinare per" una colonna "titolo" che non stai selezionando. –

risposta

26

Il problema qui è la colonna TITLEORDER BY non è selezionata nella query DISTINCT. Poiché viene utilizzato DISTINCT, la query SELECT proverà a raggruppare resultset in base alle colonne selezionate.

ORDER BY colonna non è selezionata qui, non garantisce l'unicità su resultset e quindi non riesce ad applicare 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 
) 
Problemi correlati