Bonjour a tous et merci de votre temps et de votre aide.
Je debute en MS SQL Server et j'ai une application avec 2 tables qui ont exactement les memes champs (note : je dois conserver les 2 tables).
Quand j'interroge l'une generalement j'interroge l'autre.
Dans une strored procdure voici que j'ai fait pour un de mes traitements.
Ceci est un exemple mais j'ai le cas tres souvant dans mon appli.
Code sql : 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 SELECT T.Trip#, Cast(T.DatePosted as DATETIME) AS DateCriteria, (CASE WHEN C.[FollowUpNo] IS NULL AND T.[FollowUp_No]=0 THEN 2 -- It is a 0, so at least 2 notices have been sent ELSE CASE WHEN C.[Level] = 1 THEN 1 -- 1st specified follow up ELSE CASE WHEN C.[Level] > 1 THEN 2 -- 2nd or more specified follow up END END END) as NoticeNumber FROM MY_DATA AS T LEFT JOIN #TEMP_Config as C ON T.[Region] = C.[Region] AND T.[Application] = C.[Source] AND T.[FollowUp_No] = C.[FollowUpNo] WHERE ISDATE(T.DatePosted)=1 AND (CAST(T.DatePosted as DATETIME) BETWEEN @StartDate AND @EndDate) AND T.[FollowUp_No] IS NOT NULL
Et la seule difference est ici :
ou je vais changer les noms pour MY_DATA_AutreNom et actuellement ce que je fais c'est recopier le code et le modifier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part FROM MY_DATA AS T
Ce que j'aimerai et ce sans me retrouver avec une quirielle d'objets dans ma BD c'est avoir la possibilite de passer le nom de la table en parametre.
Avoir quelque chose comme :
Code sql : 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 SELECT T.Trip#, Cast(T.DatePosted as DATETIME) AS DateCriteria, (CASE WHEN C.[FollowUpNo] IS NULL AND T.[FollowUp_No]=0 THEN 2 -- It is a 0, so at least 2 notices have been sent ELSE CASE WHEN C.[Level] = 1 THEN 1 -- 1st specified follow up ELSE CASE WHEN C.[Level] > 1 THEN 2 -- 2nd or more specified follow up END END END) as NoticeNumber FROM {{{Ici_La_Table}}} AS T LEFT JOIN #TEMP_Config as C ON T.[Region] = C.[Region] AND T.[Application] = C.[Source] AND T.[FollowUp_No] = C.[FollowUpNo] WHERE ISDATE(T.DatePosted)=1 AND (CAST(T.DatePosted as DATETIME) BETWEEN @StartDate AND @EndDate) AND T.[FollowUp_No] IS NOT NULL
Que recommandez-vous ?
A+
Partager