跳过sql server表中的最后一条记录

时间:2014-10-11 11:35:02

标签: sql sql-server-2008

我在表格中有37行,如何显示36行

SELECT c.CommonContentId      
      ,c.Content_Code      
      ,c.Content_Name      
      ,c.Seo_Name      
      ,c.[Description]      
      ,c.Link     
      ,c.Page_Path      
      ,c.ContentType_Code      
      ,c.Creation_Date      
      ,c.Is_Active      
      ,c.Last_Update_Date      
      ,c.Category_Code      
      ,c.Category_Code_Style  
      ,c.Content_Script      
      ,c.Content_Website      
      ,c.Logo_Path      
      ,c.Case_Study      
      ,c.SortOrder      
      ,c.Tags      
      ,c.Vl_Page_Image_Url 
      ,c.Is_Show_Vl_Pages,    
      ,ct.ContentType_Name    
      ,cat.Category_Name    
      ,cat1.Category_Name as Category_Name_Style
      ,ROW_NUMBER() over (ORDER BY c.ContentType_Code ASC, c.Content_Code DESC) as Record_No
      ,CASE WHEN ROW_NUMBER() over (ORDER BY c.ContentType_Code ASC, c.Content_Code DESC) % 3 = 0 
             THEN '' ELSE '' END as Class       
      ,c.SortOrder      
      , Case WHEN len(logo_path) > 1 
               then 'imagePadded' 
            else '' end as Tetimonial_Image_Css
      ,Case when c.Link like '%vidyard%' 
              then 'http://play.vidyard.com/'+c.Page_Path+'' 
           else 'http://vimeo.com/'+c.Page_Path+'' end   as videolinks  

FROM Content c     
INNER JOIN  ContentType ct    ON c.ContentType_Code = ct.ContentType_Code       
LEFT OUTER JOIN Category cat  ON c.Category_Code = cat.Category_Code       
LEFT OUTER JOIN Category cat1 ON c.Category_Code_Style = cat1.Category_Code    
WHERE c.Is_Active = 1

2 个答案:

答案 0 :(得分:1)

目前尚不清楚是否需要 Oracle MS SQL服务器的答案,因为您的问题都是用PL / SQL和SQL服务器标记的。< / p>

据我所知,没有跨供应商的语法来实现这一目标。

MS SQL

使用TOP clause

SELECT TOP (36)
...

的Oracle

对于Oracle,一种方法是使用pseudo-column ROWNUM

SELECT ....
WHERE ROWNUM <= 36

从Oracle 12c开始(我认为),您可以使用FETCH clause

SELECT ...
FETCH FIRST 36 ROWS ONLY;

答案 1 :(得分:-1)

我将使用CTE。然后跳过最后一行。这适用于具有任意数量记录的表,并且真正地&#34;跳过sql server表中的最后一条记录&#34;没有使用任何幻数。

WITH CTE AS
(

    -- Your SQL Statement here...

) 

Select * from CTE
where Record_No <> (SELECT Count(*) from CTE)