2009-07-24 5 views
0

Je veux créer une logique de rotation en sql considérer comme il y a 3 numéros 1,2,3 puis la première semaine 1,2 sera sélectionné suivant 3,1 suivant 2,3 et ainsi de suite .... s'il y a 4 nombres 1, 2, 3, 4 puis 1, 2, 3, 4, 4, 4 suivants, ensuite 1, 2 ... Comme ça je veux générer les nombres dans le serveur sql. S'il vous plaît, aidez-moi.SQL Rotation des numéros

+1

Je ne vois pas de motif commun dans vos exemples. Veuillez les vérifier à nouveau et donner une liste complète de ce que vous voulez (ne pas utiliser "et ainsi de suite"). –

+0

Je pense que le modèle est de choisir deux numéros chaque semaine et en boucle. Donc si trois nombres vous avez 1,2,3,1,2,3,1,2,3, ... "tourné" comme suit: (1,2), (3,1), (2,3) , ...; Avec 4 nombres: 1,2,3,4,1,2,3,4, ... comme (1,2), (3,4), (1,2), ... Donc c'est plus comme cueillir la paire suivante chaque semaine. – dave

Répondre

1

Vous ne aimez ceci:

declare @cnt int, @ofs int 

select @cnt = count(*) from TheTable 

set @ofs = (((@week - 1) * 2) % @cnt) + 1 

select * from TheTable 
where Number between @ofs and @ofs + 1 
union all 
select * from TheTable 
where Number between @ofs - @cnt and @ofs - @cnt + 1 
0

Obtenez le module du nombre de semaines depuis la date de votre époque, puis sélectionnez toutes les entrées d'une table de nombres qui sont compris entre 1 et votre limite, sauf le résultat du module.