我在Sql Server 2008中,输入了一些sql代码
select tw1.code ,tw1.name,tw2.newest,tw2.cyc 
from (select * from (select * from SinaStockInfo order by Time desc ) t group by code) tw1 
left join (select * from (select * from StockEstimate order by time1 desc ) t group by code) tw2 on tw1.code=tw2.code
 
报错:
消息 1033,级别 15,状态 1,第 1 行
除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
消息 1033,级别 15,状态 1,第 1 行
除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。请各位指点下,我该怎么做?

解决方案 »

  1.   

    把order by Time desc和order by Time1 desc 都去掉
      

  2.   

    你这语句是要干嘛呢?写的那么复杂感觉原本就两个表  你先分别排序  又group 接着按照code内联其实应该直接内联 检索 然后group  最后order by吧 个人观点
      

  3.   

    直接用可视化方式建立视图,然后查看它的sql代码
      

  4.   

    你把你的查询拆解了,由里层向外层做做实验,看报错不,能不能返回数据。
    比如“select * from (select * from SinaStockInfo order by Time desc ) t group by code”
    这个能执行吗?
      

  5.   

    select * from (select * from SinaStockInfo order by Time desc ) t group by code有了group by 前面就不能使用select * 了可以改为
    select code ,name from (select * from SinaStockInfo order by Time desc ) t group by code,name我有一点疑问:排序后的表和不排序的表被group后都是一样的,不知道楼主为何要多个排序