2013-02-25 14 views
2

我寫了從表中選擇中間行的查詢:選擇中間行失敗,只有一行

with records as(select row_number() over(order by someKey) as 'row', * 
       from MyTable) 
select * 
from records 
where row=(select (count(*)/2) from records) 

這工作得很好,除了在MyTable只有一個排在它返回的情況下,一個空的數據集。我認爲這是因爲在這種特殊情況下,1/2被截斷爲零。所以我試了ceiling(count(*)/2),但是我得到了同樣的結果。我如何獲得count(*)/2以使用浮點運算?

+1

,你可以嘗試使用* CASE當你的子查詢 – jazzytomato 2013-02-25 13:56:50

+0

*有人回答我應該只使用'2.0' insted的'的2'。這工作得很好。不知道爲什麼這個答案被刪除了......「CASE WHEN」方式是這個案例的典範嗎? – 2013-02-25 13:57:29

+1

@dario_ramos我刪除了它,因爲我不確定答案':D'現在它的背部,因爲我測試它在sqlfiddle.com – 2013-02-25 13:58:50

回答

2

試試,.0劈,

CEILING(COUNT(*)/2.0)