2016-06-09 117 views
1

好日子,請先查看我的查詢。添加訂單時出錯

SELECT * 
FROM 
( 
    SELECT DISTINCT row, a.tanggal, b.OutletCode, c.Nilai, a.Nip, b.Fullname, 
     a.KodePenilaian, f.Description AS posisilama, d.ShortDesc AS posisibaru 
    FROM penilaian_header a 
    LEFT JOIN Employee b 
     ON a.Nip = b.Nip 
    LEFT JOIN Position f 
     ON b.PositionCode = f.PositionCode 
    LEFT JOIN Position d 
     ON a.PositionCode = d.PositionCode 
    LEFT JOIN arealeader g 
     ON g.OutletCode = b.OutletCode 
    LEFT JOIN 
    (
     SELECT ROW_NUMBER() OVER (PARTITION BY KodePenilaianH 
            ORDER BY idPenilaiand DESC) AS Row, 
      Nilai, KodePenilaianH 
     FROM penilaian_Detail 
    ) c 
     ON a.KodePenilaian = c.KodePenilaianH 
    WHERE a.Outlet LIKE '%%' AND Periode LIKE '%%' 
    ORDER BY b.OutletCode ASC 
) nilai PIVOT (SUM(nilai) FOR ROW IN ([1],[2],[3],[4],[5])) piv; 

我的問題是當我添加Order by我的查詢錯誤。這裏是錯誤:

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

沒有Order By我的查詢工作正常。

+1

錯誤消息非常明顯,您在子查詢中使用了'ORDER BY'。也許你可以在子查詢中添加「TOP」? –

回答

2

我認爲​​是錯誤的原因,而不是ORDER BY裏面的分區,這是必要的,應該允許的。

如果您想要返回所有記錄,可以使用TOP(例如大數)。

SELECT * 
FROM 
( 
    SELECT DISTINCT TOP 2147483647 row, a.tanggal, b.OutletCode, c.Nilai, a.Nip, 
     b.Fullname, a.KodePenilaian, f.Description AS posisilama, d.ShortDesc AS posisibaru 
    FROM penilaian_header a 
    LEFT JOIN Employee b 
     ON a.Nip = b.Nip 
    ... 
    ORDER BY b.OutletCode ASC 
) nilai PIVOT (SUM(nilai) FOR ROW IN ([1],[2],[3],[4],[5])) piv; 
+0

這對我來說是一個很好的教訓。謝謝。 – YVS1102

+0

看看[這個SO答案](http://stackoverflow.com/questions/985921/sql-error-with-order-by-in-subquery)進行更徹底的討論。 –