2016-03-19 11 views
1

私はデータ行の行番号を取得することがわかったスニペットを使用しています。プロシージャに渡すものに応じて、テーブルの奇数行または偶数行を取得できるストアドプロシージャが必要です。ここで試したバリエーションの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 
関連する問題