Programme en T-SQL

reahn Messages postés 13 Statut Membre -  
reahn Messages postés 13 Statut Membre -
Bonjour,

Je dois séparer plusieurs chaine de caractère correspondant a une liste de code séparer par une virgule, chaque code correspond a un jour dans le mois. J'ai réussi à le créer sous oracle mais pour les besoins de mon stage je dois le mettre au format T-SQL (sous sql verver 2008) et la je bloque,
Je sais que je dois utiliser SUBSTRING et CHARINDEX mais il me refuse mon UNION quelques pourrai m'aider

Voici le code correspondant pour les 2 premièrs jour sous ORACLE

SELECT nummat, datedeb, datefin, rang, datedeb date_jour,
-- PLAN_PREV
SUBSTR (codplan1_prev, 1,
INSTR (codplan1_prev, ',', 1, 1) - 1) codplan,

SUBSTR (typplan1_prev, 1,
INSTR (typplan1_prev, ',', 1, 1) - 1) typplan_prev,

-- PLAN_PASSE
SUBSTR (codplan1_passe, 1,
INSTR (codplan1_passe, ',', 1, 1) - 1) codpass,

SUBSTR (typplan1_passe, 1,
INSTR (typplan1_passe, ',', 1, 1) - 1) typplan_passe

FROM planning

UNION

SELECT nummat, datedeb, datefin, rang, datedeb + 1 datedeb_j2,
SUBSTR (codplan1_prev,
INSTR (codplan1_prev, ',', 1, 1) + 1,
( INSTR (codplan1_prev, ',', 1, 2)
- INSTR (codplan1_prev, ',', 1, 1)) - 1) codplan_2,

SUBSTR (typplan1_prev,
INSTR (typplan1_prev, ',', 1, 1) + 1,
( INSTR (typplan1_prev, ',', 1, 2)
- INSTR (typplan1_prev, ',', 1, 1)) - 1) typplan_prev_2,

SUBSTR (codplan1_passe,
INSTR (codplan1_passe, ',', 1, 1) + 1,
( INSTR (codplan1_passe, ',', 1, 2)
- INSTR (codplan1_passe, ',', 1, 1)) - 1) codpass_2,

SUBSTR (typplan1_passe,
INSTR (typplan1_passe, ',', 1, 1) + 1,
( INSTR (typplan1_passe, ',', 1, 2)
- INSTR (typplan1_passe, ',', 1, 1)) - 1) typplan_passe_2

FROM planning

Et voici ou j'en suis sous SQL Server

SELECT nummat, datedeb, datefin, rang, datedeb date_jour,
-- PLAN_PREV
SUBSTRING (codplan1_prev, 1, CHARINDEX (',',codplan1_prev) - 1) codplan,

SUBSTRING (typplan1_prev, 1, CHARINDEX (',',typplan1_prev) - 1) typplan_prev,

-- PLAN_PASSE
SUBSTRING (codplan1_passe, 1, CHARINDEX (',',codplan1_passe) - 1) codpass,

SUBSTRING (typplan1_passe, 1, CHARINDEX (',',typplan1_passe) - 1) typplan_passe

FROM planning

UNION

SELECT nummat, datedeb, datefin, rang, datedeb + 1 datedeb_j2,
SUBSTRING (codplan1_prev,
CHARINDEX (',',codplan1_prev) + 1,
( CHARINDEX (',',codplan1_prev)
- CHARINDEX (',',codplan1_prev)) - 1) codplan_2,

SUBSTRING (typplan1_prev,
CHARINDEX (',',typplan1_prev) + 1,
( CHARINDEX (',',typplan1_prev)
- CHARINDEX (',',typplan1_prev)) - 1) typplan_prev_2,

SUBSTRING (codplan1_passe,
CHARINDEX (',',codplan1_passe) + 1,
( CHARINDEX (',',codplan1_passe)
- CHARINDEX (',',codplan1_passe)) - 1) codpass_2,

SUBSTRING (typplan1_passe,
CHARINDEX (',',typplan1_passe) + 1,
( CHARINDEX (',',typplan1_passe)
- CHARINDEX (',',typplan1_passe)) - 1) typplan_passe_2

FROM planning

Merci pour vos réponses
A voir également:

1 réponse

reahn Messages postés 13 Statut Membre
 
De l'aide s'il vous plait
0