Sql server 使用ORDERBY子句创建SQL查询
我正在创建一个只有几个表的视图,最后我想按降序排列数据。 在CREATEVIEW语句中使用ORDERBY子句时,会收到一条错误消息,指出ORDERBY子句不能包含在视图中。因此,我将其与SELECT TOP 100%with ORDER BY子句一起使用。但是我的视图的输出中有100多行。 我该怎么做呢。帮帮我 不带ORDERBY子句的CREATEVIEW语句如下所示Sql server 使用ORDERBY子句创建SQL查询,sql-server,view,sql-order-by,Sql Server,View,Sql Order By,我正在创建一个只有几个表的视图,最后我想按降序排列数据。 在CREATEVIEW语句中使用ORDERBY子句时,会收到一条错误消息,指出ORDERBY子句不能包含在视图中。因此,我将其与SELECT TOP 100%with ORDER BY子句一起使用。但是我的视图的输出中有100多行。 我该怎么做呢。帮帮我 不带ORDERBY子句的CREATEVIEW语句如下所示 CREATE VIEW VW_PF_GOALEVAL_REPORT AS select GEV.EVAL_ID, EV.
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
最后我想包括
order by gev.GOAL_VERSION_NO DESC
声明。
谢谢。不是说100行,而是说100%,这意味着所有记录 像这样更改第一个选择
CREATE VIEW VW_PF_GOALEVAL_REPORT AS
select TOP 100 PERCENT GEV.EVAL_ID, EV.EVAL_NAME, GEV.FORM_ID,
在视图中不应使用Order By。如果使用Top 100%,则可以忽略错误,但不会得到排序结果 我可以推荐你这样使用
Select * from VW_PF_GOALEVAL_REPORT VW
order by VW.GOAL_VERSION_NO DESC
假设如果要在视图本身中包含ORDERBY语句,可以使用Top 99%。在这里,您可以获得排序结果,但可能会遗漏结果集中的几行。请使用视图外的顺序