2017-03-08 7 views
0

Ich möchte die Tabelle nach Datum bestellen, aber meine Abfrage zeigt einen Fehler:sql: Sortiert nach Datum

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.

Meine Suche:

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 

wie kann ich von IntervalDate bestellen?

+2

order by bis zum Ende der Abfrage ersetzen, die DBMS verwenden Sie? –

Antwort

3

Als Nachricht Fehler sagte, dass Sie order by in abgeleiteten Tabellen (in Ihrem Fall) nicht verwenden können. Sie sollten wie unten

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