Java 如何在子查询中添加排序依据或排序?
这是一个甚至包含分页的查询,我需要按照我指定的特定列进行排序Java 如何在子查询中添加排序依据或排序?,java,sql-server-2008,Java,Sql Server 2008,这是一个甚至包含分页的查询,我需要按照我指定的特定列进行排序 DECLARE @RowsPerPage INT = 100, @PageNumber INT =1 SELECT DISTINCT * FROM (SELECT DISTINCT a.*,b.WorkflowId bWorkflowId,b.TRF_CompanyCoverage, b.TRF_OrgID,b.TRF_Fundb_RepoNumber,b.TRF_WSC_PPI,b.TRF_BucketID,b.TRF_GAAP
DECLARE @RowsPerPage INT = 100, @PageNumber INT =1
SELECT DISTINCT * FROM
(SELECT DISTINCT a.*,b.WorkflowId bWorkflowId,b.TRF_CompanyCoverage,
b.TRF_OrgID,b.TRF_Fundb_RepoNumber,b.TRF_WSC_PPI,b.TRF_BucketID,b.TRF_GAAPCode,b
.TRF_MarketCapUSD,b.TRF_OrgName,b.TRF_AutomationFlag,b.TRF_SmartPriority,b.TRF_I
ndustryName,b.TRF_ExchangeCountryCode,b.TRF_ExchangeCountryName,b.TRF_UserGroup,
Tasks.TaskId,Tasks.WorkflowId cworkFlowId,Tasks.TRFTaskId,Tasks.TaskName,
ROW_NUMBER() OVER (ORDER BY Tasks.WorkflowID) AS RowNum
FROM CCC_Filling_Metadata a,Fundamentals_Metadata b,Tasks
WHERE a.WorkflowID=b.WorkflowID AND b.WorkflowID=Tasks.WorkflowID AND
Tasks.CreateDateTime >= '2015-01-01'
AND Tasks.CreateDateTime <= '2015-12-01' AND Tasks.Owner = '0326271' AND
Tasks.TaskStatus = 'open') AS SOD
WHERE SOD.RowNum BETWEEN ((@PageNumber-1)*@RowsPerPage)+1
AND @RowsPerPage*(@PageNumber)
order by Tasks.TargetDate, Tasks.SmartPriority, Fundamentals_Metadata.TRF_MarketCapUSD desc
请帮助我了解如何在此查询中使用“Order by…”。您的外部查询是:
选择DISTINCT*
从(…)到SOD
其中SOD.RowNum介于((@PageNumber-1)*@RowsPerPage)+1和@RowsPerPage*(@PageNumber)之间
按Tasks.TargetDate、Tasks.SmartPriority、Fundamentals\u Metadata.TRF\u MarketCapUSD desc排序
因此,任务
和基础知识\u元数据
是未知的限定符。删除它们,因为您只有一个名为SOD
的“视图”,所以不需要限定
当然,您需要将
Tasks.TargetDate
和Tasks.SmartPriority
添加到内部查询中,以便对它们进行排序。Msg 1033,级别15,状态1,第15行ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP或FOR XML。当我被添加到课程的内部查询中时,会出现此错误。正如错误所说,您不能在内部查询中指定orderby,我没有告诉您这样做。我告诉过您从ORDERBY子句中删除限定符,并将缺少的列添加到内部查询的SELECT子句“以便它们可用于排序”。
Msg 4104, Level 16, State 1, Line 17
The multi-part identifier "Tasks.TargetDate" could not be bound.
Msg 4104, Level 16, State 1, Line 17
The multi-part identifier "Tasks.SmartPriority" could not be bound.
Msg 4104, Level 16, State 1, Line 17
The multi-part identifier "Fundamentals_Metadata.TRF_MarketCapUSD" could not be bound.
Msg 145, Level 15, State 1, Line 2
ORDER BY items must appear in the select list if SELECT DISTINCT is specified.