2017-03-08 54 views
0

我想订购日期表,但我的查询显示错误:SQL:ORDER BY日期

The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.

我的查询:

select intervaldate, [M1], [M2], [M3], [M4], [M5], [M6], [M7], [M8] 
    from 
    (select intervaldate,amount, name from (Select tSystem.Name, IntervalCount.IntervalDate, 
    sum(case when CounterName = 'Prod' then calculationUnits else 0 end) as Amount from IntervalCount, tsystem where 

    IntervalCount.intervaldate between '2017-03-06 00:00:00.000' and '2017-03-08 00:00:00.000' and IntervalCount.systemid =tsystem.id 

    group by tSystem.Name, IntervalCount.Intervaldate 
order by IntervalCount.Intervaldate asc 
    ) as T3) as T1 
    pivot 
    (sum (amount) 
    for name in ([M1], [M2], [M3], [M4], [M5], [M6], [M7], [M8]) 

    ) as t2 

我怎么可以为了通过IntervalDate?

+2

? –

回答

3

由于消息错误说你不能在派生表中使用order by(在你的情况下)。 你应该是您使用哪种DBMS更换order by到查询的末尾,如下

select intervaldate, [M1], [M2], [M3], [M4], [M5], [M6], [M7], [M8] 
    from 
    (select intervaldate,amount, name from (Select tSystem.Name, IntervalCount.IntervalDate, 
    sum(case when CounterName = 'Prod' then Units else 0 end) as Amount from IntervalCount, tsystem where 

    IntervalCount.intervaldate between '2017-03-06 00:00:00.000' and '2017-03-08 00:00:00.000' and IntervalCount.systemid =tsystem.id 

    group by tSystem.Name, IntervalCount.Intervaldate 
order by IntervalCount.Intervaldate asc 
    ) as T3) as T1 
    pivot 
    (sum (amount) 
    for name in ([M1], [M2], [M3], [M4], [M5], [M6], [M7], [M8]) 

    ) as t2 
    order by Intervaldate asc