【发布时间】:2014-04-25 01:28:18
【问题描述】:
是否可以按列别名之一对 PagedTable 的结果进行排序?
这是我的工作查询:
SELECT * FROM
(
SELECT
DI.P_ID as IDEA_ID,
DI.P_IDEA_NUMBER as IDEA_NUMBER,
CASE WHEN len(DI.P_TITLE) < 1 then 'None recorded' else DI.P_TITLE END as IDEA_TITLE,
CASE WHEN len(DI.P_IDEA_MANAGER) < 1 then 'None' ELSE isnull((Select top 1 FName+' 'LName from OTHERSERVER.OTHERDB.dbo.Usernames as UN1 where (XID=DI.P_IDEA_MANAGER) order by endDate desc),'No longer on record') end as IDEA_MANAGER,
CASE WHEN len(DI.P_RELEASE_MONTH) < 1 or len(DI.P_RELEASE_YEAR) < 1 then 'None recorded' else DI.P_RELEASE_MONTH+'/'+DI.P_RELEASE_YEAR END as IDEA_REQUESTED_RELEASE,
SIS.LABEL as IDEA_STATUS,
ROW_NUMBER() OVER(Order by DI.P_IDEA_NUMBER ASC) as RowNum
FROM
DATA_IDEA as DI
LEFT OUTER JOIN
SEL_IDEA_STATUS as SIS on SIS.ID=(SELECT TOP 1 S_ID from DATA_IDEA_STATUS as DIS where (DIS.P_ID=DI.P_ID) order by created desc)
WHERE
(SIS.IS_DRAFT='True')
)
as PagedTable where (RowNum between 1 and 10)
这样,我将按“创意编号”对结果进行排序,即 1、2、3 等。 不按“DI.P_IDEA_NUMBER”排序,是否可以按“IDEA_NUMBER”排序?
您可能认为这没什么大不了的,按创意编号排序。好吧,我还必须让结果可以按“IDEA_MANAGER”排序。根据案例声明,IDEA_MANAGER 将是三件事之一。 1) 约翰·史密斯,2) 没有记录,3) 不再记录
【问题讨论】:
-
您是否要对最终结果集进行排序?如果是这样,我认为您唯一的选择是按别名排序,因为这些将是从内部查询传递给外部查询的结果集中的列名。您是否尝试将 ORDER BY IDEA_NUMER 或 ORDER BY IDEA_MANAGER 添加到查询的最后。结果如何?
-
@SPKoder - 不,对最终结果集(10 条记录)进行排序不是我想要做的。这里的基本要点是总结果将在 1 - 9,999,999 之间。我希望能够对总结果进行排序,然后从分页表中返回 10 个结果的子集。