2016-03-19 23 views
1

我正在使用一個片段,我發現這會讓我得到一個數據行的行號。我想要一個存儲過程,它可以讓我得到我的表的奇數行或偶數行,這取決於我傳遞給過程的內容。以下是我嘗試過的其中一個變體,但它不會「編譯」:如何在SQL Server中進行「條件比較」?

create procedure SelectByMod 
    @ModNum int, 
    @Keyword varchar(2) -- 'eq' or 'ne' 
as 
begin 
with temp as (
    select num, row_number() over (order by num) as rownum 
    from numbers 
) 
select rownum, num from temp where 
case (@Keyword) 
    when 'eq' then rownum % @ModNum = 0 
    else rownum % ModNum != 0 
end 
end 

任何想法如何實現此目的?謝謝。

回答

3

案例並不意味着這樣的使用,您只需要使用and/or

select rownum, num from temp where 
(
    (@Keyword = 'eq' and rownum % @ModNum = 0) or 
    (@Keyword != 'eq' and rownum % @ModNum != 0) 
) 
end