2016-04-01 6 views
0

Ich erstelle eine Sicht mit wenigen Tabellen und schließlich möchte ich die Daten in absteigender Reihenfolge bestellen. Wenn ich die ORDER BY-Klausel in der create view-Anweisung verwende, erhalte ich die Fehlermeldung, dass die ORDER BY-Klausel nicht in einer Ansicht enthalten sein darf. So dass ich es mit SELECT TOP 100 PERCENT mit ORDER BY-Klausel verwendet habe. Aber ich habe mehr als 100 Zeilen in der Ausgabe meiner Ansicht. Wie kann ich es tun. Hilf mir.Erstellen Sie eine SQL-Abfrage mit Reihenfolge nach Klausel

Erstellen Sie View-Anweisung ohne Reihenfolge nach Klausel ist wie folgt.

CREATE VIEW VW_PF_GOALEVAL_REPORT AS 

select GEV.EVAL_ID, EV.EVAL_NAME, GEV.FORM_ID, 
GEV.EMP_NUMBER,EMP.EMP_DISPLAY_NAME, EMPS.EMP_DISPLAY_NAME AS SUP_NAME, EMPR.EMP_DISPLAY_NAME AS REV_NAME, 
GG.GGRP_ID, GG.GGRP_NAME, GG.GGRP_WEIGHTAGE, 
GEV.GOAL_ID, G.GOAL_DESC, GEV.GOAL_VERSION_NO, 
G.GOAL_WEIGHTAGE, G.GOAL_MANDATORY_FLG, G.TARGET_DATE, 
EG.RETME_ID, 
REE.RETMEITEM_GRADE AS EMP_RETMEITEM_ID, REE.RETMEITEM_DESCRIPTION AS EMP_RETMEITEM_DESC, GEV.GOALEVAL_EMP_RATING, GEV.EMP_COMMENT, 
RES.RETMEITEM_GRADE AS SUP_RETMEITEM_ID, RES.RETMEITEM_DESCRIPTION AS SUP_RETMEITEM_DESC, GEV.GOALEVAL_SUP_RATING, GEV.SUP_COMMENT, 
RER.RETMEITEM_GRADE AS REV_RETMEITEM_ID, RER.RETMEITEM_DESCRIPTION AS REV_RETMEITEM_DESC, GEV.SECOND_SUP_RATING, GEV.SECOND_SUP_COMMENT 

from PF_GOALEVAL GEV 

LEFT JOIN 
PF_EVALUATION EV 
ON GEV.EVAL_ID=EV.EVAL_ID 

left join 
PF_GOAL G 
ON GEV.GOAL_ID=G.GOAL_ID AND GEV.EMP_NUMBER=g.EMP_NUMBER AND GEV.EVAL_ID=G.EVAL_ID and GEV.GOAL_VERSION_NO=G.GOAL_VERSION_NO 

left join 
PF_GOAL_GROUP GG 
ON G.GOAL_TYPEID=GG.GGRP_ID 

left join 
PF_EVALGOAL_GROUP EG 
ON GEV.EVAL_ID=EG.EVAL_ID AND GG.GGRP_ID=EG.GGRP_ID 

left join 
PF_RETINGMETHODITEMS REE 
ON EG.RETME_ID=REE.RETME_ID AND GEV.GOALEVAL_EMP_RATING=REE.RETMEITEM_ID 

left join 
PF_RETINGMETHODITEMS RES 
ON EG.RETME_ID=RES.RETME_ID AND GEV.GOALEVAL_SUP_RATING=RES.RETMEITEM_ID 

left join 
PF_RETINGMETHODITEMS RER 
ON EG.RETME_ID=RER.RETME_ID AND GEV.SECOND_SUP_RATING=RER.RETMEITEM_ID 

left join 
PF_EVALEMPLOYEE EVEMPS 
ON GEV.EMP_NUMBER=EVEMPS.EMP_NUMBER AND GEV.EVAL_ID=EVEMPS.EVAL_ID AND EVEMPS.APTYPE_ID=2 
left join 
EMPLOYEE EMPS 
ON EVEMPS.PERAPPRAISER_NUMBER = EMPS.EMP_NUMBER 

left join 
PF_EVALEMPLOYEE EVEMPR 
ON GEV.EMP_NUMBER=EVEMPR.EMP_NUMBER AND GEV.EVAL_ID=EVEMPR.EVAL_ID AND EVEMPR.APTYPE_ID=5 
left join 
EMPLOYEE EMPR 
ON EVEMPR.PERAPPRAISER_NUMBER = EMPR.EMP_NUMBER 

left join 
EMPLOYEE EMP 
ON GEV.EMP_NUMBER=EMP.EMP_NUMBER 

left join 
PF_EVALAPPRAISER EVA 
ON gev.EVAL_ID = EVA.EVAL_ID 

Und schließlich möchte ich

order by gev.GOAL_VERSION_NO DESC 

Aussage aufzunehmen. Danke.

Antwort

0

Es sagt nicht, 100 Reihe, es ist 100% sagen, die

Änderung alle Datensätze bedeutet, dass die erste wie diese wählen

CREATE VIEW VW_PF_GOALEVAL_REPORT AS 

select TOP 100 PERCENT GEV.EVAL_ID, EV.EVAL_NAME, GEV.FORM_ID, 
0

Sie sollten nicht sortieren innerhalb einer Ansicht verwenden. Wenn Sie Top 100 Prozent verwenden, können Sie den Fehler ignorieren, aber das sortierte Ergebnis wird nicht angezeigt.

Ich kann Ihnen empfehlen, so zu verwenden.

Select * from VW_PF_GOALEVAL_REPORT VW 
order by VW.GOAL_VERSION_NO DESC 

Angenommen, Sie möchten die Reihenfolge nach Anweisung in die Ansicht selbst einfügen, können Sie Top 99 Prozent verwenden. Hier können Sie sortierte Ergebnisse erhalten, aber es besteht die Möglichkeit, einige Zeilen in Ihrer Ergebnismenge zu verpassen. Bitte verwenden Sie die Bestellung außerhalb der Ansicht.