Programme en T-SQL
reahn
Messages postés
13
Statut
Membre
-
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
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:
- Programme en T-SQL
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Programme word gratuit - Guide
- Message programmé - Guide
- Desinstaller un programme - Guide