2017-03-08 51 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