Salut à tous
J'ai une requete qui cherche des lignes avec un champ codejour
le probleme c'est qu'elle doit me retourner pour chaque ligne plusieurs ligne en dépend du
codeJour
codeJour contient des valeurs qui ont des sinification précises par exemple
65 veut dire Samedi et Vendredi
7 veut dire Lundi et Dimanche et Mardi parceque dimanche=1, Lundi=2, Mardi=4 ....
voilà ce que j'ai fait
j'ai fait une fonction scalaire appelé (JourReg) qui me retourne une chaine contanant les jours trouvés
en voici un morceau
après j'ai fait une fonction table (son nom est listeJour) qui me retourne cette chaine en liste des jours
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 declare @resultat nvarchar(250) set @resultat='' if @codeJour >=64 begin set @resultat = 'Samedi' set @codeJour = @codeJour - 64 end if @codeJour >=32 begin if @resultat ='' set @resultat = 'Vendredi' else set @resultat = @resultat + 'Vendredi' set @codeJour = @codeJour - 32 end if @codeJour >=16 begin if @resultat ='' set @resultat = 'Jeudi' else set @resultat = @resultat + 'Jeudi' set @codeJour = @codeJour - 16 end ........
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 select JOUR from ( select case when CHARINDEX('Lundi', JourReg(65) ,1) <> 0 then 'Lundi' end jour union select case when CHARINDEX('Samedi', JourReg(65) ,1) <> 0 then 'Samedi' end jour union select case when CHARINDEX('Vendredi', JourReg(65) ,1) <> 0 then 'Vendredi' end jour union select case when CHARINDEX('Jeudi', JourReg(65) ,1) <> 0 then 'Jeudi' end jour ) lg where jour is not null
Maintenant je fait ma procedure stockes qui va aller chercher mes données et mutliplier chaque
ligne par le nombre de jours trouvés, mais elle marche pas, car il me permet pas d'utiliser
le champ CodeJour de la mesServices
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select * from mesServices() HPRS , listeJour(HPRS.CodeJour) HPJ
avez vous une idée comment je peux le faire
Merci d'avance
Partager