2014-04-09 32 views
0

我想要返回設計SQL View它從表中返回TOP 3記錄從小到大的順序考慮NULL表中的值作爲最大值,以便我可以丟棄前3個結果中的空值如果存在超過三條記錄。在SQL視圖中排序錯誤

我能夠成功地做到這一點,使用下面的查詢,但因爲它是行爲不端的原因第三條記錄是,如果我的表中的第三和第四條記錄是相同的,那麼我的視圖返回一個NULL值是第三條記錄有點奇怪。

例如,考慮我和值23,45,19,35,35

,當我跑我的看法應該以升序返回頂部3個值這是19,23,35但由於某些原因,我的查詢返回19,23,NULL並命名爲Grades在我的表中的列查詢工作正常,如果我是35的第三個記錄是不同的,即如果Grades23,45,19,35,40然後正常工作,並返回19,23,35

我的查詢如下

CREATE VIEW [dbo].[test] 
AS 

SELECT distinct 

    CC.Grades, 
    CC.Term, 




    FROM CanadianCrudes CC 
CROSS APPLY (SELECT TOP 3 
       Grades 

      FROM CanadianCrudes iCC 
      WHERE CC.Term = iCC.Term 
      ORDER BY case when iCC.Grades is null then 1 else 0 end, iCC.Grades asc) iCC 

回答

1

您無法訂購視圖。相反,你必須在查詢視圖訂購您的結果..如:

選擇頂部1 * 從[myNewView] 整理[myNewView] [列1]

+0

上面的查詢僅僅是一個好我的觀點 – DoIt

+0

的一部分,但它不會改變的事實,你不能在一組特定的順序視圖。 – jhe

+0

我編輯了我的查詢 – DoIt