Comment extraire les jours d'absence des salariés ?
4 réponses
TF
Bonjour,
Dans une table traite le salarié et les jours du mois en cours et une code
d'activité (présence, absence, ...).
A l'aide d'une fonction ou d'une procédure stockée, comment pourrais-je
extraire les intervalles de l'activité du salarié ?
par exemple :
Présent : du 1er au 5
WE : du 6 au 7
Stage : du 8 au 15
etc ...
Ce que je suis en train de faire en VBA :
1 - parcourir l'enregistrement du salarié et le mois concerné, comparer le
jour courant et le jour suivant, s'il y a un changement d'activité ...
Merci pour une aide
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
En principe éclater tous les jours existant et préciser par un booléen si présent ou pas. Dès lors le calcul est simple :
SELECT ... COUNT(ColJour) FROM ... WHERE PRESENT = 1
A +
TF a écrit:
Bonjour, Dans une table traite le salarié et les jours du mois en cours et une code d'activité (présence, absence, ...). A l'aide d'une fonction ou d'une procédure stockée, comment pourrais-je extraire les intervalles de l'activité du salarié ?
par exemple : Présent : du 1er au 5 WE : du 6 au 7 Stage : du 8 au 15 etc ...
Ce que je suis en train de faire en VBA : 1 - parcourir l'enregistrement du salarié et le mois concerné, comparer le jour courant et le jour suivant, s'il y a un changement d'activité ... Merci pour une aide
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
En principe éclater tous les jours existant et préciser par un booléen
si présent ou pas. Dès lors le calcul est simple :
SELECT ... COUNT(ColJour)
FROM ...
WHERE PRESENT = 1
A +
TF a écrit:
Bonjour,
Dans une table traite le salarié et les jours du mois en cours et une code
d'activité (présence, absence, ...).
A l'aide d'une fonction ou d'une procédure stockée, comment pourrais-je
extraire les intervalles de l'activité du salarié ?
par exemple :
Présent : du 1er au 5
WE : du 6 au 7
Stage : du 8 au 15
etc ...
Ce que je suis en train de faire en VBA :
1 - parcourir l'enregistrement du salarié et le mois concerné, comparer le
jour courant et le jour suivant, s'il y a un changement d'activité ...
Merci pour une aide
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
En principe éclater tous les jours existant et préciser par un booléen si présent ou pas. Dès lors le calcul est simple :
SELECT ... COUNT(ColJour) FROM ... WHERE PRESENT = 1
A +
TF a écrit:
Bonjour, Dans une table traite le salarié et les jours du mois en cours et une code d'activité (présence, absence, ...). A l'aide d'une fonction ou d'une procédure stockée, comment pourrais-je extraire les intervalles de l'activité du salarié ?
par exemple : Présent : du 1er au 5 WE : du 6 au 7 Stage : du 8 au 15 etc ...
Ce que je suis en train de faire en VBA : 1 - parcourir l'enregistrement du salarié et le mois concerné, comparer le jour courant et le jour suivant, s'il y a un changement d'activité ... Merci pour une aide
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
TF
Bonjour, Merci pour votre réponse, mais celà ne peut pas fonctionner, car je souhaite extraire les périodes de présence ou des autres activités, mais pas le nombre de jours de présence, voilà mon exemple : la personne est : présente de 1 au 5 absente de 8 au 12 présente de 15 au 18 stage le 19 ....... .......
Bonne journée "Fred BROUARD" a écrit dans le message de news:
En principe éclater tous les jours existant et préciser par un booléen si présent ou pas. Dès lors le calcul est simple :
SELECT ... COUNT(ColJour) FROM ... WHERE PRESENT = 1
A +
TF a écrit: > Bonjour, > Dans une table traite le salarié et les jours du mois en cours et une
code
> d'activité (présence, absence, ...). > A l'aide d'une fonction ou d'une procédure stockée, comment pourrais-je > extraire les intervalles de l'activité du salarié ? > > par exemple : > Présent : du 1er au 5 > WE : du 6 au 7 > Stage : du 8 au 15 > etc ... > > Ce que je suis en train de faire en VBA : > 1 - parcourir l'enregistrement du salarié et le mois concerné, comparer
le
> jour courant et le jour suivant, s'il y a un changement d'activité ... > Merci pour une aide > >
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
Bonjour,
Merci pour votre réponse, mais celà ne peut pas fonctionner, car je souhaite
extraire les périodes de présence ou des autres activités, mais pas le
nombre de jours de présence, voilà mon exemple :
la personne est :
présente de 1 au 5
absente de 8 au 12
présente de 15 au 18
stage le 19
.......
.......
Bonne journée
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:4041959A.6050703@club-internet.fr...
En principe éclater tous les jours existant et préciser par un booléen
si présent ou pas. Dès lors le calcul est simple :
SELECT ... COUNT(ColJour)
FROM ...
WHERE PRESENT = 1
A +
TF a écrit:
> Bonjour,
> Dans une table traite le salarié et les jours du mois en cours et une
code
> d'activité (présence, absence, ...).
> A l'aide d'une fonction ou d'une procédure stockée, comment pourrais-je
> extraire les intervalles de l'activité du salarié ?
>
> par exemple :
> Présent : du 1er au 5
> WE : du 6 au 7
> Stage : du 8 au 15
> etc ...
>
> Ce que je suis en train de faire en VBA :
> 1 - parcourir l'enregistrement du salarié et le mois concerné, comparer
le
> jour courant et le jour suivant, s'il y a un changement d'activité ...
> Merci pour une aide
>
>
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
Bonjour, Merci pour votre réponse, mais celà ne peut pas fonctionner, car je souhaite extraire les périodes de présence ou des autres activités, mais pas le nombre de jours de présence, voilà mon exemple : la personne est : présente de 1 au 5 absente de 8 au 12 présente de 15 au 18 stage le 19 ....... .......
Bonne journée "Fred BROUARD" a écrit dans le message de news:
En principe éclater tous les jours existant et préciser par un booléen si présent ou pas. Dès lors le calcul est simple :
SELECT ... COUNT(ColJour) FROM ... WHERE PRESENT = 1
A +
TF a écrit: > Bonjour, > Dans une table traite le salarié et les jours du mois en cours et une
code
> d'activité (présence, absence, ...). > A l'aide d'une fonction ou d'une procédure stockée, comment pourrais-je > extraire les intervalles de l'activité du salarié ? > > par exemple : > Présent : du 1er au 5 > WE : du 6 au 7 > Stage : du 8 au 15 > etc ... > > Ce que je suis en train de faire en VBA : > 1 - parcourir l'enregistrement du salarié et le mois concerné, comparer
le
> jour courant et le jour suivant, s'il y a un changement d'activité ... > Merci pour une aide > >
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
Fred BROUARD
donc comme je l'ai dit, éclater toutes les dates :
date action 1 p 2 p 3 p 4 p 5 p 6 7 8 a
...
18 p 19 s
SELECT COUNT(date) as NOMBRE, action FROM ... GROUP BY action
NOMBRE action 4 NULL 9 p 5 a 1 s
s => stage a => absent p => présent NULL => on ne sait pas
A lire : http://sqlpro.developpez.com/Planning/SQL_PLN.html
A +
TF a écrit:
Bonjour, Merci pour votre réponse, mais celà ne peut pas fonctionner, car je souhaite extraire les périodes de présence ou des autres activités, mais pas le nombre de jours de présence, voilà mon exemple : la personne est : présente de 1 au 5 absente de 8 au 12 présente de 15 au 18 stage le 19 ....... .......
Bonne journée "Fred BROUARD" a écrit dans le message de news:
En principe éclater tous les jours existant et préciser par un booléen si présent ou pas. Dès lors le calcul est simple :
SELECT ... COUNT(ColJour) FROM ... WHERE PRESENT = 1
A +
TF a écrit:
Bonjour, Dans une table traite le salarié et les jours du mois en cours et une
code
d'activité (présence, absence, ...). A l'aide d'une fonction ou d'une procédure stockée, comment pourrais-je extraire les intervalles de l'activité du salarié ?
par exemple : Présent : du 1er au 5 WE : du 6 au 7 Stage : du 8 au 15 etc ...
Ce que je suis en train de faire en VBA : 1 - parcourir l'enregistrement du salarié et le mois concerné, comparer
le
jour courant et le jour suivant, s'il y a un changement d'activité ... Merci pour une aide
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
donc comme je l'ai dit, éclater toutes les dates :
date action
1 p
2 p
3 p
4 p
5 p
6
7
8 a
...
18 p
19 s
SELECT COUNT(date) as NOMBRE, action
FROM ...
GROUP BY action
NOMBRE action
4 NULL
9 p
5 a
1 s
s => stage
a => absent
p => présent
NULL => on ne sait pas
A lire :
http://sqlpro.developpez.com/Planning/SQL_PLN.html
A +
TF a écrit:
Bonjour,
Merci pour votre réponse, mais celà ne peut pas fonctionner, car je souhaite
extraire les périodes de présence ou des autres activités, mais pas le
nombre de jours de présence, voilà mon exemple :
la personne est :
présente de 1 au 5
absente de 8 au 12
présente de 15 au 18
stage le 19
.......
.......
Bonne journée
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:4041959A.6050703@club-internet.fr...
En principe éclater tous les jours existant et préciser par un booléen
si présent ou pas. Dès lors le calcul est simple :
SELECT ... COUNT(ColJour)
FROM ...
WHERE PRESENT = 1
A +
TF a écrit:
Bonjour,
Dans une table traite le salarié et les jours du mois en cours et une
code
d'activité (présence, absence, ...).
A l'aide d'une fonction ou d'une procédure stockée, comment pourrais-je
extraire les intervalles de l'activité du salarié ?
par exemple :
Présent : du 1er au 5
WE : du 6 au 7
Stage : du 8 au 15
etc ...
Ce que je suis en train de faire en VBA :
1 - parcourir l'enregistrement du salarié et le mois concerné, comparer
le
jour courant et le jour suivant, s'il y a un changement d'activité ...
Merci pour une aide
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
donc comme je l'ai dit, éclater toutes les dates :
date action 1 p 2 p 3 p 4 p 5 p 6 7 8 a
...
18 p 19 s
SELECT COUNT(date) as NOMBRE, action FROM ... GROUP BY action
NOMBRE action 4 NULL 9 p 5 a 1 s
s => stage a => absent p => présent NULL => on ne sait pas
A lire : http://sqlpro.developpez.com/Planning/SQL_PLN.html
A +
TF a écrit:
Bonjour, Merci pour votre réponse, mais celà ne peut pas fonctionner, car je souhaite extraire les périodes de présence ou des autres activités, mais pas le nombre de jours de présence, voilà mon exemple : la personne est : présente de 1 au 5 absente de 8 au 12 présente de 15 au 18 stage le 19 ....... .......
Bonne journée "Fred BROUARD" a écrit dans le message de news:
En principe éclater tous les jours existant et préciser par un booléen si présent ou pas. Dès lors le calcul est simple :
SELECT ... COUNT(ColJour) FROM ... WHERE PRESENT = 1
A +
TF a écrit:
Bonjour, Dans une table traite le salarié et les jours du mois en cours et une
code
d'activité (présence, absence, ...). A l'aide d'une fonction ou d'une procédure stockée, comment pourrais-je extraire les intervalles de l'activité du salarié ?
par exemple : Présent : du 1er au 5 WE : du 6 au 7 Stage : du 8 au 15 etc ...
Ce que je suis en train de faire en VBA : 1 - parcourir l'enregistrement du salarié et le mois concerné, comparer
le
jour courant et le jour suivant, s'il y a un changement d'activité ... Merci pour une aide
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
Fred BROUARD
CREATE TABLE MyTable (MyDate INT, action CHAR(1))
INSERT INTO MyTable VALUES (0, NULL) INSERT INTO MyTable VALUES (1, 'p') INSERT INTO MyTable VALUES (2, 'p') INSERT INTO MyTable VALUES (3, 'p') INSERT INTO MyTable VALUES (4, 'p') INSERT INTO MyTable VALUES (5, 'p') INSERT INTO MyTable VALUES (6, NULL) INSERT INTO MyTable VALUES (7, NULL) INSERT INTO MyTable VALUES (8, 'a') INSERT INTO MyTable VALUES (9, 'a') INSERT INTO MyTable VALUES (10, 'a') INSERT INTO MyTable VALUES (11, 'a') INSERT INTO MyTable VALUES (12, 'a') INSERT INTO MyTable VALUES (13, NULL) INSERT INTO MyTable VALUES (14, NULL) INSERT INTO MyTable VALUES (15, 'p') INSERT INTO MyTable VALUES (16, 'p') INSERT INTO MyTable VALUES (17, 'p') INSERT INTO MyTable VALUES (18, 'p') INSERT INTO MyTable VALUES (19, 's') INSERT INTO MyTable VALUES (20, NULL)
SELECT T1.*, 'FIN ' AS TypeAction FROM MyTable T1 INNER JOIN MyTable T2 ON T1.MyDate +1 = T2.MyDate AND COALESCE(T1.action,'') <> COALESCE(T2.action, '') UNION SELECT T1.*, 'DEBUT' AS TypeAction FROM MyTable T1 INNER JOIN MyTable T2 ON T1.MyDate -1 = T2.MyDate AND COALESCE(T1.action,'') <> COALESCE(T2.action, '')
Order By 1
MyDate action TypeAction ----------- ------ ---------- 0 NULL FIN 1 p DEBUT 5 p FIN 6 NULL DEBUT 7 NULL FIN 8 a DEBUT 12 a FIN 13 NULL DEBUT 14 NULL FIN 15 p DEBUT 18 p FIN 19 s DEBUT 19 s FIN 20 NULL DEBUT
(14 ligne(s) affectée(s))
Fred BROUARD a écrit:
donc comme je l'ai dit, éclater toutes les dates :
date action 1 p 2 p 3 p 4 p 5 p 6 7 8 a
...
18 p 19 s
SELECT COUNT(date) as NOMBRE, action FROM ... GROUP BY action
NOMBRE action 4 NULL 9 p 5 a 1 s
s => stage a => absent p => présent NULL => on ne sait pas
A lire : http://sqlpro.developpez.com/Planning/SQL_PLN.html
A +
TF a écrit:
Bonjour, Merci pour votre réponse, mais celà ne peut pas fonctionner, car je souhaite extraire les périodes de présence ou des autres activités, mais pas le nombre de jours de présence, voilà mon exemple : la personne est : présente de 1 au 5 absente de 8 au 12 présente de 15 au 18 stage le 19 ....... .......
Bonne journée "Fred BROUARD" a écrit dans le message de news:
En principe éclater tous les jours existant et préciser par un booléen si présent ou pas. Dès lors le calcul est simple :
SELECT ... COUNT(ColJour) FROM ... WHERE PRESENT = 1
A +
TF a écrit:
Bonjour, Dans une table traite le salarié et les jours du mois en cours et une
code
d'activité (présence, absence, ...). A l'aide d'une fonction ou d'une procédure stockée, comment pourrais-je extraire les intervalles de l'activité du salarié ?
par exemple : Présent : du 1er au 5 WE : du 6 au 7 Stage : du 8 au 15 etc ...
Ce que je suis en train de faire en VBA : 1 - parcourir l'enregistrement du salarié et le mois concerné, comparer
le
jour courant et le jour suivant, s'il y a un changement d'activité ... Merci pour une aide
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
CREATE TABLE MyTable
(MyDate INT,
action CHAR(1))
INSERT INTO MyTable VALUES (0, NULL)
INSERT INTO MyTable VALUES (1, 'p')
INSERT INTO MyTable VALUES (2, 'p')
INSERT INTO MyTable VALUES (3, 'p')
INSERT INTO MyTable VALUES (4, 'p')
INSERT INTO MyTable VALUES (5, 'p')
INSERT INTO MyTable VALUES (6, NULL)
INSERT INTO MyTable VALUES (7, NULL)
INSERT INTO MyTable VALUES (8, 'a')
INSERT INTO MyTable VALUES (9, 'a')
INSERT INTO MyTable VALUES (10, 'a')
INSERT INTO MyTable VALUES (11, 'a')
INSERT INTO MyTable VALUES (12, 'a')
INSERT INTO MyTable VALUES (13, NULL)
INSERT INTO MyTable VALUES (14, NULL)
INSERT INTO MyTable VALUES (15, 'p')
INSERT INTO MyTable VALUES (16, 'p')
INSERT INTO MyTable VALUES (17, 'p')
INSERT INTO MyTable VALUES (18, 'p')
INSERT INTO MyTable VALUES (19, 's')
INSERT INTO MyTable VALUES (20, NULL)
SELECT T1.*, 'FIN ' AS TypeAction
FROM MyTable T1
INNER JOIN MyTable T2
ON T1.MyDate +1 = T2.MyDate
AND COALESCE(T1.action,'') <> COALESCE(T2.action, '')
UNION
SELECT T1.*, 'DEBUT' AS TypeAction
FROM MyTable T1
INNER JOIN MyTable T2
ON T1.MyDate -1 = T2.MyDate
AND COALESCE(T1.action,'') <> COALESCE(T2.action, '')
Order By 1
MyDate action TypeAction
----------- ------ ----------
0 NULL FIN
1 p DEBUT
5 p FIN
6 NULL DEBUT
7 NULL FIN
8 a DEBUT
12 a FIN
13 NULL DEBUT
14 NULL FIN
15 p DEBUT
18 p FIN
19 s DEBUT
19 s FIN
20 NULL DEBUT
(14 ligne(s) affectée(s))
Fred BROUARD a écrit:
donc comme je l'ai dit, éclater toutes les dates :
date action
1 p
2 p
3 p
4 p
5 p
6
7
8 a
...
18 p
19 s
SELECT COUNT(date) as NOMBRE, action
FROM ...
GROUP BY action
NOMBRE action
4 NULL
9 p
5 a
1 s
s => stage
a => absent
p => présent
NULL => on ne sait pas
A lire :
http://sqlpro.developpez.com/Planning/SQL_PLN.html
A +
TF a écrit:
Bonjour,
Merci pour votre réponse, mais celà ne peut pas fonctionner, car je
souhaite
extraire les périodes de présence ou des autres activités, mais pas le
nombre de jours de présence, voilà mon exemple :
la personne est :
présente de 1 au 5
absente de 8 au 12
présente de 15 au 18
stage le 19
.......
.......
Bonne journée
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:4041959A.6050703@club-internet.fr...
En principe éclater tous les jours existant et préciser par un booléen
si présent ou pas. Dès lors le calcul est simple :
SELECT ... COUNT(ColJour)
FROM ...
WHERE PRESENT = 1
A +
TF a écrit:
Bonjour,
Dans une table traite le salarié et les jours du mois en cours et une
code
d'activité (présence, absence, ...).
A l'aide d'une fonction ou d'une procédure stockée, comment pourrais-je
extraire les intervalles de l'activité du salarié ?
par exemple :
Présent : du 1er au 5
WE : du 6 au 7
Stage : du 8 au 15
etc ...
Ce que je suis en train de faire en VBA :
1 - parcourir l'enregistrement du salarié et le mois concerné,
comparer
le
jour courant et le jour suivant, s'il y a un changement d'activité ...
Merci pour une aide
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
INSERT INTO MyTable VALUES (0, NULL) INSERT INTO MyTable VALUES (1, 'p') INSERT INTO MyTable VALUES (2, 'p') INSERT INTO MyTable VALUES (3, 'p') INSERT INTO MyTable VALUES (4, 'p') INSERT INTO MyTable VALUES (5, 'p') INSERT INTO MyTable VALUES (6, NULL) INSERT INTO MyTable VALUES (7, NULL) INSERT INTO MyTable VALUES (8, 'a') INSERT INTO MyTable VALUES (9, 'a') INSERT INTO MyTable VALUES (10, 'a') INSERT INTO MyTable VALUES (11, 'a') INSERT INTO MyTable VALUES (12, 'a') INSERT INTO MyTable VALUES (13, NULL) INSERT INTO MyTable VALUES (14, NULL) INSERT INTO MyTable VALUES (15, 'p') INSERT INTO MyTable VALUES (16, 'p') INSERT INTO MyTable VALUES (17, 'p') INSERT INTO MyTable VALUES (18, 'p') INSERT INTO MyTable VALUES (19, 's') INSERT INTO MyTable VALUES (20, NULL)
SELECT T1.*, 'FIN ' AS TypeAction FROM MyTable T1 INNER JOIN MyTable T2 ON T1.MyDate +1 = T2.MyDate AND COALESCE(T1.action,'') <> COALESCE(T2.action, '') UNION SELECT T1.*, 'DEBUT' AS TypeAction FROM MyTable T1 INNER JOIN MyTable T2 ON T1.MyDate -1 = T2.MyDate AND COALESCE(T1.action,'') <> COALESCE(T2.action, '')
Order By 1
MyDate action TypeAction ----------- ------ ---------- 0 NULL FIN 1 p DEBUT 5 p FIN 6 NULL DEBUT 7 NULL FIN 8 a DEBUT 12 a FIN 13 NULL DEBUT 14 NULL FIN 15 p DEBUT 18 p FIN 19 s DEBUT 19 s FIN 20 NULL DEBUT
(14 ligne(s) affectée(s))
Fred BROUARD a écrit:
donc comme je l'ai dit, éclater toutes les dates :
date action 1 p 2 p 3 p 4 p 5 p 6 7 8 a
...
18 p 19 s
SELECT COUNT(date) as NOMBRE, action FROM ... GROUP BY action
NOMBRE action 4 NULL 9 p 5 a 1 s
s => stage a => absent p => présent NULL => on ne sait pas
A lire : http://sqlpro.developpez.com/Planning/SQL_PLN.html
A +
TF a écrit:
Bonjour, Merci pour votre réponse, mais celà ne peut pas fonctionner, car je souhaite extraire les périodes de présence ou des autres activités, mais pas le nombre de jours de présence, voilà mon exemple : la personne est : présente de 1 au 5 absente de 8 au 12 présente de 15 au 18 stage le 19 ....... .......
Bonne journée "Fred BROUARD" a écrit dans le message de news:
En principe éclater tous les jours existant et préciser par un booléen si présent ou pas. Dès lors le calcul est simple :
SELECT ... COUNT(ColJour) FROM ... WHERE PRESENT = 1
A +
TF a écrit:
Bonjour, Dans une table traite le salarié et les jours du mois en cours et une
code
d'activité (présence, absence, ...). A l'aide d'une fonction ou d'une procédure stockée, comment pourrais-je extraire les intervalles de l'activité du salarié ?
par exemple : Présent : du 1er au 5 WE : du 6 au 7 Stage : du 8 au 15 etc ...
Ce que je suis en train de faire en VBA : 1 - parcourir l'enregistrement du salarié et le mois concerné, comparer
le
jour courant et le jour suivant, s'il y a un changement d'activité ... Merci pour une aide
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************