报错:如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。
原代码:
select distinct top 100 processtype , tblGroupData.SortValue from view_AllFinishingOps_idx
LEFT JOIN dbo.tblGroupData ON tblGroupData.Sort = 'ProcessType' AND ProcessType = SubFloatValue
where machine = 'hgs3'
order by finishtime desc
问题分析:
distinct查询结果里没有 finishtime ,也就无法根据 finishtime 排序
解决方法:
① 先初步查询排序,然后再对结果查询。
② 查询里加上需要作为排序依据的字段。
解决方法一:
select distinct * from
(
select top 100 processtype , tblGroupData.SortValue from view_AllFinishingOps_idx
LEFT JOIN dbo.tblGroupData ON tblGroupData.Sort = 'ProcessType' AND ProcessType = SubFloatValue
where machine = 'hgs3'
order by finishtime desc
) as happy
解决方法二: