2013-10-30 194 views
0
select aaa.BookId from 
(SELECT  TOP (100) PERCENT Id, BookId,CreatedOnUtc 
         FROM   dbo.Chapter AS c 
         ORDER BY CreatedOnUtc desc    
         ) as aaa 
group by aaa.BookId 

ORDER BY CreatedOnUtc desc怎麼樣對結果沒有任何影響。group by by desc

我想要得到的結果是這樣

BookId (with desc createdonUtc) 
3 
4 
1 
... 

更新:我去與這個

select BookId, Max(CreatedOnUtc) 
from Chapter 
group by BookId 
order by Max(CreatedOnUtc) desc 
+2

排序只能在OUTSIDE子查詢中完成,僅在主查詢中有效。 –

+4

選擇最高100%的含義是什麼? –

+0

對不起錯誤的問題......我的意思是......你爲什麼需要按某一列進行分組,而無需顯示靠近使用分組聲明的選擇語句? – Apostolos

回答

2

的ORDER BY是僅供子查詢。您的外部查詢沒有order by子句,因此結果可以按任意順序排列。

其他的事情:

  • 爲什麼TOP 100 PERCENT
  • 爲什麼SELECT BookIdGROUP BY BookId但沒有聚合列?也許你只想要SELECT DISTINCT

此外,你想達到什麼可能是不可能的。如果您的表格中有重複的BookId:

ID BookId CreatedOnUtc 
1 1  1 
2 2  2 
3 1  3 

您的結果應該以何種順序排列? 1 2或2 1?

+0

抱歉,我的知識。愚弄我,我認爲獨特是我需要的。 –