Programme en T-SQL

Fermé
reahn Messages postés 10 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 21 mars 2010 - 26 mars 2009 à 15:53
reahn Messages postés 10 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 21 mars 2010 - 27 mars 2009 à 14:14
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

1 réponse

reahn Messages postés 10 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 21 mars 2010
27 mars 2009 à 14:14
De l'aide s'il vous plait
0