2016-03-19 13 views
1

Veri satırının satır numarasını almama izin veren bir snippet kullanıyorum. Prosedüre ne geçtiğime bağlı olarak masamın tek ve hatta satırlarını almama izin veren saklı bir prosedürüm olsun istiyorum. İşte ben denedim varyasyonlar biri, ama "derlemek" değildir:SQL Server'da "koşullu karşılaştırma" nasıl yapılır?

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 

Herhangi bir fikir bunu nasıl başarabilirsiniz? Teşekkürler.

cevap

3

Vaka böyle kullanılacak anlamına gelmez, sadece kullanmak and/or gerekir:

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