sql server 解决union all之后 order by失效的问题

来源:互联网 发布:时代网络大厦 美食 编辑:程序博客网 时间:2024/05/02 00:14

注意关键点在TOP 99.999999 PERCENT  


SELECT * FROM (      SELECT TOP  99.999999 PERCENT       t.CallDate,      t.userid,      t.GroupName,      t.AgentNum,      t.username,      t.duration,      t.connectNumber,      t.connectOrderNumber,      t.callnumber,      t.CallOrderNumber,      t.ConnectionRate,      t.OnlinSumbitNumber,      t.connectsuccessRate,      t.InputOrderNumber,      t.InputOrderRate,      t.SuccessOrderNumber,      t.SuccessRate,      t.FirstCallNumber,      t.TrackNumber       FROM @tab AS t WHERE t.userid IS NOT NULL       ORDER BY t.CallDate ASC ,      CASE   WHEN    @OrderType=101 THEN  t.duration END ASC ,   CASE   WHEN    @OrderType=102 THEN t.duration END DESC  ,   CASE   WHEN    @OrderType=111 THEN t.connectNumber END ASC ,   CASE   WHEN    @OrderType=112 THEN t.connectNumber END DESC ,   CASE   WHEN    @OrderType=121 THEN t.ConnectionRate END ASC ,   CASE   WHEN    @OrderType=122 THEN t.ConnectionRate END DESC ,   CASE   WHEN    @OrderType=131 THEN t.connectsuccessRate END ASC ,   CASE   WHEN    @OrderType=132 THEN t.connectsuccessRate END DESC ,   CASE   WHEN    @OrderType=141 THEN t.InputOrderNumber END ASC ,   CASE   WHEN    @OrderType=142 THEN t.InputOrderNumber END DESC ,   CASE   WHEN    @OrderType=151 THEN t.InputOrderRate END ASC ,   CASE   WHEN    @OrderType=152 THEN t.InputOrderRate END DESC ,               CASE   WHEN    @OrderType=161 THEN t.SuccessOrderNumber END ASC ,               CASE   WHEN    @OrderType=162 THEN t.SuccessOrderNumber END DESC ,              CASE   WHEN    @OrderType=171 THEN t.SuccessRate END ASC ,             CASE   WHEN    @OrderType=172 THEN t.SuccessRate END DESC ,              CASE   WHEN    @OrderType=181 THEN t.FirstCallNumber END ASC ,              CASE   WHEN    @OrderType=182 THEN t.FirstCallNumber END DESC,            CASE   WHEN    @OrderType=191 THEN t.TrackNumber END ASC ,              CASE   WHEN    @OrderType=192 THEN t.TrackNumber END DESC      ) AS tt      UNION ALL      SELECT * FROM (      SELECT TOP  99.999999 PERCENT       t.CallDate,      t.userid,      t.GroupName,      t.AgentNum,      t.username,      t.duration,      t.connectNumber,      t.connectOrderNumber,      t.callnumber,      t.CallOrderNumber,      CASE WHEN t.CallDate=N'合计' then null ELSE t.ConnectionRate end as ConnectionRate,      t.OnlinSumbitNumber,      CASE WHEN t.CallDate=N'合计' then null ELSE t.connectsuccessRate end as connectsuccessRate,      t.InputOrderNumber,      CASE WHEN t.CallDate=N'合计' then null ELSE t.InputOrderRate end as InputOrderRate,      t.SuccessOrderNumber,      CASE WHEN t.CallDate=N'合计' then null ELSE t.SuccessRate end as SuccessRate,      t.FirstCallNumber,      t.TrackNumber      FROM      @tab AS t WHERE t.userid IS NULL ORDER BY t.CallDate ASC       ) AS v


0 0
原创粉丝点击