voila j'ai une problematique et j'ai du mal a voir comment je peux faire
cela avec des group by et peut etre la fonction pivot ????
j'ai une table avec 2 cles,
ou la cle_A represente des personnes et la cle_B des enseignes à laquelle
elles appartiennent !
bien sur une cle_A peut se retrouver avec plusieurs enseignes (cle_b)
et justement on me demande de sortir des stats du style
je veux avoir le compte des individus pour la CLE_B valeur 1, combien de ces
individus sont aussi present dans la CLE_B valeur 2, combien dans la CLe_B
valeur 3 etc...
en gros pour l'enseigne A combien de personne se retrouve aussi dans les
autres enseignes etc...
pour l'exemple la CLe_A valeur 1 se retrouve dans 3 enseignes de la CLe_B
donc pour la CLe_B valeur 2 combien y'en a t'il en valeur 1 ou autre ???
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
non, vous n'avez pas été clair et si vous doutez c'est que vous ne comprennez pas non plus clairement votre problème.
Soyez précis, clair, complet... donc efficace. Postez la réponse attendue par rapport à vos données.
Soyez gentil (pour ne pas dire poli) et donnez le DDL de vos tables et les ordres d'insertion pour que chacun puisse reproduire le problème chez lui pour vous aider !
A +
christophe a écrit :
Bonjour,
voila j'ai une problematique et j'ai du mal a voir comment je peux faire cela avec des group by et peut etre la fonction pivot ????
j'ai une table avec 2 cles, ou la cle_A represente des personnes et la cle_B des enseignes à laquelle elles appartiennent ! bien sur une cle_A peut se retrouver avec plusieurs enseignes (cle_b)
et justement on me demande de sortir des stats du style je veux avoir le compte des individus pour la CLE_B valeur 1, combien de ces individus sont aussi present dans la CLE_B valeur 2, combien dans la CLe_B valeur 3 etc...
en gros pour l'enseigne A combien de personne se retrouve aussi dans les autres enseignes etc... pour l'exemple la CLe_A valeur 1 se retrouve dans 3 enseignes de la CLe_B
donc pour la CLe_B valeur 2 combien y'en a t'il en valeur 1 ou autre ???
CLE_A | CLE_B 1 1 1 2 1 3 2 1 2 4 3 1 4 3
j'espere que j'ai été clair, car je doute ;)
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
non, vous n'avez pas été clair et si vous doutez c'est que vous ne
comprennez pas non plus clairement votre problème.
Soyez précis, clair, complet... donc efficace. Postez la réponse
attendue par rapport à vos données.
Soyez gentil (pour ne pas dire poli) et donnez le DDL de vos tables et
les ordres d'insertion pour que chacun puisse reproduire le problème
chez lui pour vous aider !
A +
christophe a écrit :
Bonjour,
voila j'ai une problematique et j'ai du mal a voir comment je peux faire
cela avec des group by et peut etre la fonction pivot ????
j'ai une table avec 2 cles,
ou la cle_A represente des personnes et la cle_B des enseignes à
laquelle elles appartiennent !
bien sur une cle_A peut se retrouver avec plusieurs enseignes (cle_b)
et justement on me demande de sortir des stats du style
je veux avoir le compte des individus pour la CLE_B valeur 1, combien de
ces individus sont aussi present dans la CLE_B valeur 2, combien dans la
CLe_B valeur 3 etc...
en gros pour l'enseigne A combien de personne se retrouve aussi dans les
autres enseignes etc...
pour l'exemple la CLe_A valeur 1 se retrouve dans 3 enseignes de la CLe_B
donc pour la CLe_B valeur 2 combien y'en a t'il en valeur 1 ou autre ???
CLE_A | CLE_B
1 1
1 2
1 3
2 1
2 4
3 1
4 3
j'espere que j'ai été clair, car je doute ;)
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
non, vous n'avez pas été clair et si vous doutez c'est que vous ne comprennez pas non plus clairement votre problème.
Soyez précis, clair, complet... donc efficace. Postez la réponse attendue par rapport à vos données.
Soyez gentil (pour ne pas dire poli) et donnez le DDL de vos tables et les ordres d'insertion pour que chacun puisse reproduire le problème chez lui pour vous aider !
A +
christophe a écrit :
Bonjour,
voila j'ai une problematique et j'ai du mal a voir comment je peux faire cela avec des group by et peut etre la fonction pivot ????
j'ai une table avec 2 cles, ou la cle_A represente des personnes et la cle_B des enseignes à laquelle elles appartiennent ! bien sur une cle_A peut se retrouver avec plusieurs enseignes (cle_b)
et justement on me demande de sortir des stats du style je veux avoir le compte des individus pour la CLE_B valeur 1, combien de ces individus sont aussi present dans la CLE_B valeur 2, combien dans la CLe_B valeur 3 etc...
en gros pour l'enseigne A combien de personne se retrouve aussi dans les autres enseignes etc... pour l'exemple la CLe_A valeur 1 se retrouve dans 3 enseignes de la CLe_B
donc pour la CLe_B valeur 2 combien y'en a t'il en valeur 1 ou autre ???
CLE_A | CLE_B 1 1 1 2 1 3 2 1 2 4 3 1 4 3
j'espere que j'ai été clair, car je doute ;)
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
christophe
oui fred désolé la précipitation, alors voila un exemple qui va formaliser le tout ! avec les questions !
CREATE TABLE #TOTO (ID INT IDENTITY(1,1), CLE_SP BIGINT, CLE_ENSEIGNES INT)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 2) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 2) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (4, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (5, 3)
SELECT CLE_ENSEIGNES, COUNT(*) AS NB FROM #TOTO GROUP BY CLE_ENSEIGNES --alors ici nous avons un comptage par enseigne
/* hos ce que j'aimerais faire c'est un comptage par enseigne dont les individus peut etre contenu dans d'autre enseigne. exemple pour l'enseigne 1
donc je reprend l'exemple de l'enseigne 1 elle contient 3 individus comme le montre le comptage et ces 3 memes individus sont eux aussi present 2 dans l'eneigne N°2 et enfin egalement 3 dans l'enseigne N°3
on voit bien que sont absent les mecs 4 et 5 car non present dans l'enseigne 1 et hop on passe à la 2 et rebelotte.
*/
--biensur cette est ecrite en dur mais le but de la demande c'est de pouvoir etre dynamique car le nombre d'enseigne peut changer. --ainsi que l'appartenance des individus à differentes enseiges. SELECT SUM(e1) AS T1, SUM(e2) AS T2, SUM(e3) AS T3 FROM ( SELECT CASE WHEN CLE_ENSEIGNES = 1 THEN 1 ELSE 0 END AS E1, CASE WHEN CLE_ENSEIGNES = 2 THEN 1 ELSE 0 END AS E2, CASE WHEN CLE_ENSEIGNES = 3 THEN 1 ELSE 0 END AS E3 FROM #TOTO WHERE CLE_SP IN ( SELECT CLE_SP FROM #TOTO WHERE CLE_ENSEIGNES = 1) ) Z
"Fred BROUARD" a écrit dans le message de news:eS$
non, vous n'avez pas été clair et si vous doutez c'est que vous ne comprennez pas non plus clairement votre problème.
Soyez précis, clair, complet... donc efficace. Postez la réponse attendue par rapport à vos données.
Soyez gentil (pour ne pas dire poli) et donnez le DDL de vos tables et les ordres d'insertion pour que chacun puisse reproduire le problème chez lui pour vous aider !
A +
christophe a écrit :
Bonjour,
voila j'ai une problematique et j'ai du mal a voir comment je peux faire cela avec des group by et peut etre la fonction pivot ????
j'ai une table avec 2 cles, ou la cle_A represente des personnes et la cle_B des enseignes à laquelle elles appartiennent ! bien sur une cle_A peut se retrouver avec plusieurs enseignes (cle_b)
et justement on me demande de sortir des stats du style je veux avoir le compte des individus pour la CLE_B valeur 1, combien de ces individus sont aussi present dans la CLE_B valeur 2, combien dans la CLe_B valeur 3 etc...
en gros pour l'enseigne A combien de personne se retrouve aussi dans les autres enseignes etc... pour l'exemple la CLe_A valeur 1 se retrouve dans 3 enseignes de la CLe_B
donc pour la CLe_B valeur 2 combien y'en a t'il en valeur 1 ou autre ???
CLE_A | CLE_B 1 1 1 2 1 3 2 1 2 4 3 1 4 3
j'espere que j'ai été clair, car je doute ;)
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
oui fred désolé la précipitation,
alors voila un exemple qui va formaliser le tout !
avec les questions !
CREATE TABLE #TOTO (ID INT IDENTITY(1,1), CLE_SP BIGINT, CLE_ENSEIGNES INT)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 1)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 2)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 3)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 1)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 3)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 1)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 2)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 3)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (4, 3)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (5, 3)
SELECT CLE_ENSEIGNES, COUNT(*) AS NB FROM #TOTO GROUP BY CLE_ENSEIGNES
--alors ici nous avons un comptage par enseigne
/*
hos ce que j'aimerais faire c'est un comptage par enseigne dont les
individus peut etre contenu dans d'autre enseigne.
exemple pour l'enseigne 1
donc je reprend l'exemple de l'enseigne 1 elle contient 3 individus comme le
montre le comptage
et ces 3 memes individus sont eux aussi present 2 dans l'eneigne N°2 et
enfin egalement 3 dans l'enseigne N°3
on voit bien que sont absent les mecs 4 et 5 car non present dans l'enseigne
1
et hop on passe à la 2 et rebelotte.
*/
--biensur cette est ecrite en dur mais le but de la demande c'est de pouvoir
etre dynamique car le nombre d'enseigne peut changer.
--ainsi que l'appartenance des individus à differentes enseiges.
SELECT SUM(e1) AS T1, SUM(e2) AS T2, SUM(e3) AS T3
FROM (
SELECT
CASE WHEN CLE_ENSEIGNES = 1 THEN 1 ELSE 0 END AS E1,
CASE WHEN CLE_ENSEIGNES = 2 THEN 1 ELSE 0 END AS E2,
CASE WHEN CLE_ENSEIGNES = 3 THEN 1 ELSE 0 END AS E3
FROM #TOTO
WHERE CLE_SP IN ( SELECT CLE_SP FROM #TOTO WHERE CLE_ENSEIGNES = 1)
) Z
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:eS$CrF7HIHA.4684@TK2MSFTNGP06.phx.gbl...
non, vous n'avez pas été clair et si vous doutez c'est que vous ne
comprennez pas non plus clairement votre problème.
Soyez précis, clair, complet... donc efficace. Postez la réponse attendue
par rapport à vos données.
Soyez gentil (pour ne pas dire poli) et donnez le DDL de vos tables et les
ordres d'insertion pour que chacun puisse reproduire le problème chez lui
pour vous aider !
A +
christophe a écrit :
Bonjour,
voila j'ai une problematique et j'ai du mal a voir comment je peux faire
cela avec des group by et peut etre la fonction pivot ????
j'ai une table avec 2 cles,
ou la cle_A represente des personnes et la cle_B des enseignes à laquelle
elles appartiennent !
bien sur une cle_A peut se retrouver avec plusieurs enseignes (cle_b)
et justement on me demande de sortir des stats du style
je veux avoir le compte des individus pour la CLE_B valeur 1, combien de
ces individus sont aussi present dans la CLE_B valeur 2, combien dans la
CLe_B valeur 3 etc...
en gros pour l'enseigne A combien de personne se retrouve aussi dans les
autres enseignes etc...
pour l'exemple la CLe_A valeur 1 se retrouve dans 3 enseignes de la CLe_B
donc pour la CLe_B valeur 2 combien y'en a t'il en valeur 1 ou autre ???
CLE_A | CLE_B
1 1
1 2
1 3
2 1
2 4
3 1
4 3
j'espere que j'ai été clair, car je doute ;)
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
oui fred désolé la précipitation, alors voila un exemple qui va formaliser le tout ! avec les questions !
CREATE TABLE #TOTO (ID INT IDENTITY(1,1), CLE_SP BIGINT, CLE_ENSEIGNES INT)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 2) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 2) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (4, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (5, 3)
SELECT CLE_ENSEIGNES, COUNT(*) AS NB FROM #TOTO GROUP BY CLE_ENSEIGNES --alors ici nous avons un comptage par enseigne
/* hos ce que j'aimerais faire c'est un comptage par enseigne dont les individus peut etre contenu dans d'autre enseigne. exemple pour l'enseigne 1
donc je reprend l'exemple de l'enseigne 1 elle contient 3 individus comme le montre le comptage et ces 3 memes individus sont eux aussi present 2 dans l'eneigne N°2 et enfin egalement 3 dans l'enseigne N°3
on voit bien que sont absent les mecs 4 et 5 car non present dans l'enseigne 1 et hop on passe à la 2 et rebelotte.
*/
--biensur cette est ecrite en dur mais le but de la demande c'est de pouvoir etre dynamique car le nombre d'enseigne peut changer. --ainsi que l'appartenance des individus à differentes enseiges. SELECT SUM(e1) AS T1, SUM(e2) AS T2, SUM(e3) AS T3 FROM ( SELECT CASE WHEN CLE_ENSEIGNES = 1 THEN 1 ELSE 0 END AS E1, CASE WHEN CLE_ENSEIGNES = 2 THEN 1 ELSE 0 END AS E2, CASE WHEN CLE_ENSEIGNES = 3 THEN 1 ELSE 0 END AS E3 FROM #TOTO WHERE CLE_SP IN ( SELECT CLE_SP FROM #TOTO WHERE CLE_ENSEIGNES = 1) ) Z
"Fred BROUARD" a écrit dans le message de news:eS$
non, vous n'avez pas été clair et si vous doutez c'est que vous ne comprennez pas non plus clairement votre problème.
Soyez précis, clair, complet... donc efficace. Postez la réponse attendue par rapport à vos données.
Soyez gentil (pour ne pas dire poli) et donnez le DDL de vos tables et les ordres d'insertion pour que chacun puisse reproduire le problème chez lui pour vous aider !
A +
christophe a écrit :
Bonjour,
voila j'ai une problematique et j'ai du mal a voir comment je peux faire cela avec des group by et peut etre la fonction pivot ????
j'ai une table avec 2 cles, ou la cle_A represente des personnes et la cle_B des enseignes à laquelle elles appartiennent ! bien sur une cle_A peut se retrouver avec plusieurs enseignes (cle_b)
et justement on me demande de sortir des stats du style je veux avoir le compte des individus pour la CLE_B valeur 1, combien de ces individus sont aussi present dans la CLE_B valeur 2, combien dans la CLe_B valeur 3 etc...
en gros pour l'enseigne A combien de personne se retrouve aussi dans les autres enseignes etc... pour l'exemple la CLe_A valeur 1 se retrouve dans 3 enseignes de la CLe_B
donc pour la CLe_B valeur 2 combien y'en a t'il en valeur 1 ou autre ???
CLE_A | CLE_B 1 1 1 2 1 3 2 1 2 4 3 1 4 3
j'espere que j'ai été clair, car je doute ;)
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
Christophe Lephay
"christophe" a écrit dans le message de news:
oui fred désolé la précipitation, alors voila un exemple qui va formaliser le tout ! avec les questions !
CREATE TABLE #TOTO (ID INT IDENTITY(1,1), CLE_SP BIGINT, CLE_ENSEIGNES INT)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 2) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 2) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (4, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (5, 3)
SELECT CLE_ENSEIGNES, COUNT(*) AS NB FROM #TOTO GROUP BY CLE_ENSEIGNES --alors ici nous avons un comptage par enseigne
/* hos ce que j'aimerais faire c'est un comptage par enseigne dont les individus peut etre contenu dans d'autre enseigne. exemple pour l'enseigne 1
select cle_enseignes, count(*) as nb from #toto group by cle_enseignes where cle_sp in (select cle_sp, count(*) as nb from #toto group by cle_sp having nb > 1)
J'ai pas testé, mais ça doit être un truc comme ça.
"christophe" <christophe@digital16-9.com> a écrit dans le message de news:
F5291544-0251-4D97-99ED-3A494D38C29C@microsoft.com...
oui fred désolé la précipitation,
alors voila un exemple qui va formaliser le tout !
avec les questions !
CREATE TABLE #TOTO (ID INT IDENTITY(1,1), CLE_SP BIGINT, CLE_ENSEIGNES
INT)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 1)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 2)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 3)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 1)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 3)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 1)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 2)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 3)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (4, 3)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (5, 3)
SELECT CLE_ENSEIGNES, COUNT(*) AS NB FROM #TOTO GROUP BY CLE_ENSEIGNES
--alors ici nous avons un comptage par enseigne
/*
hos ce que j'aimerais faire c'est un comptage par enseigne dont les
individus peut etre contenu dans d'autre enseigne.
exemple pour l'enseigne 1
select cle_enseignes, count(*) as nb from #toto group by cle_enseignes
where cle_sp in (select cle_sp, count(*) as nb from #toto group by cle_sp
having nb > 1)
J'ai pas testé, mais ça doit être un truc comme ça.
oui fred désolé la précipitation, alors voila un exemple qui va formaliser le tout ! avec les questions !
CREATE TABLE #TOTO (ID INT IDENTITY(1,1), CLE_SP BIGINT, CLE_ENSEIGNES INT)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 2) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 2) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (4, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (5, 3)
SELECT CLE_ENSEIGNES, COUNT(*) AS NB FROM #TOTO GROUP BY CLE_ENSEIGNES --alors ici nous avons un comptage par enseigne
/* hos ce que j'aimerais faire c'est un comptage par enseigne dont les individus peut etre contenu dans d'autre enseigne. exemple pour l'enseigne 1
select cle_enseignes, count(*) as nb from #toto group by cle_enseignes where cle_sp in (select cle_sp, count(*) as nb from #toto group by cle_sp having nb > 1)
J'ai pas testé, mais ça doit être un truc comme ça.
Christophe Lephay
"Christophe Lephay" a écrit dans le message de news: 472f4d6d$0$5090$
select cle_enseignes, count(*) as nb from #toto group by cle_enseignes where cle_sp in (select cle_sp, count(*) as nb from #toto group by cle_sp having nb > 1)
Ou peut-être ça, plutôt :
select cle_enseignes, count(*) as nb from #toto where cle_sp in (select cle_sp from #toto group by cle_sp having count(*) > 1) group by cle_enseignes
"Christophe Lephay" <christophe-lephay@wanadoo.fr> a écrit dans le message
de news: 472f4d6d$0$5090$ba4acef3@news.orange.fr...
select cle_enseignes, count(*) as nb from #toto group by cle_enseignes
where cle_sp in (select cle_sp, count(*) as nb from #toto group by cle_sp
having nb > 1)
Ou peut-être ça, plutôt :
select cle_enseignes, count(*) as nb from #toto
where cle_sp in
(select cle_sp from #toto group by cle_sp having count(*) > 1)
group by cle_enseignes
"Christophe Lephay" a écrit dans le message de news: 472f4d6d$0$5090$
select cle_enseignes, count(*) as nb from #toto group by cle_enseignes where cle_sp in (select cle_sp, count(*) as nb from #toto group by cle_sp having nb > 1)
Ou peut-être ça, plutôt :
select cle_enseignes, count(*) as nb from #toto where cle_sp in (select cle_sp from #toto group by cle_sp having count(*) > 1) group by cle_enseignes
christophe
Merci christophe,
mais ton cas ne les couvre pas tous ! je n'ai que les cas qui sont dans plusieures enseignes hors ils me faut quoi qu'il arrivent toutes les enseignes.
j'ai une piste qui donne de bons resultats mais je n'aime pas beaucoups le code que j'ai fait !
"Christophe Lephay" a écrit dans le message de news:472f5101$0$25928$
"Christophe Lephay" a écrit dans le message de news: 472f4d6d$0$5090$
select cle_enseignes, count(*) as nb from #toto group by cle_enseignes where cle_sp in (select cle_sp, count(*) as nb from #toto group by cle_sp having nb > 1)
Ou peut-être ça, plutôt :
select cle_enseignes, count(*) as nb from #toto where cle_sp in (select cle_sp from #toto group by cle_sp having count(*) > 1) group by cle_enseignes
Merci christophe,
mais ton cas ne les couvre pas tous !
je n'ai que les cas qui sont dans plusieures enseignes hors ils me faut quoi
qu'il arrivent toutes les enseignes.
j'ai une piste qui donne de bons resultats mais je n'aime pas beaucoups le
code que j'ai fait !
"Christophe Lephay" <christophe-lephay@wanadoo.fr> a écrit dans le message
de news:472f5101$0$25928$ba4acef3@news.orange.fr...
"Christophe Lephay" <christophe-lephay@wanadoo.fr> a écrit dans le message
de news: 472f4d6d$0$5090$ba4acef3@news.orange.fr...
select cle_enseignes, count(*) as nb from #toto group by cle_enseignes
where cle_sp in (select cle_sp, count(*) as nb from #toto group by cle_sp
having nb > 1)
Ou peut-être ça, plutôt :
select cle_enseignes, count(*) as nb from #toto
where cle_sp in
(select cle_sp from #toto group by cle_sp having count(*) > 1)
group by cle_enseignes
mais ton cas ne les couvre pas tous ! je n'ai que les cas qui sont dans plusieures enseignes hors ils me faut quoi qu'il arrivent toutes les enseignes.
j'ai une piste qui donne de bons resultats mais je n'aime pas beaucoups le code que j'ai fait !
"Christophe Lephay" a écrit dans le message de news:472f5101$0$25928$
"Christophe Lephay" a écrit dans le message de news: 472f4d6d$0$5090$
select cle_enseignes, count(*) as nb from #toto group by cle_enseignes where cle_sp in (select cle_sp, count(*) as nb from #toto group by cle_sp having nb > 1)
Ou peut-être ça, plutôt :
select cle_enseignes, count(*) as nb from #toto where cle_sp in (select cle_sp from #toto group by cle_sp having count(*) > 1) group by cle_enseignes
Christophe Lephay
"christophe" a écrit dans le message de news:
mais ton cas ne les couvre pas tous ! je n'ai que les cas qui sont dans plusieures enseignes hors ils me faut quoi qu'il arrivent toutes les enseignes.
j'ai une piste qui donne de bons resultats mais je n'aime pas beaucoups le code que j'ai fait !
"Christophe Lephay" a écrit dans le message de news:472f5101$0$25928$
select cle_enseignes, count(*) as nb from #toto where cle_sp in (select cle_sp from #toto group by cle_sp having count(*) > 1) group by cle_enseignes
Ok :
select toto1.cle_enseignes, nb from #toto toto1 left join (select cle_enseignes, count(*) as nb from #toto where cle_sp in (select cle_sp from #toto group by cle_sp having count(*) > 1) group by cle_enseignes) toto2 on toto1.cle_enseignes = toto2.cle_enseignes
Une fois encore, j'ai pas testé...
"christophe" <christophe@digital16-9.com> a écrit dans le message de news:
DA7408BC-7162-4696-A1DE-1457D1D02893@microsoft.com...
mais ton cas ne les couvre pas tous !
je n'ai que les cas qui sont dans plusieures enseignes hors ils me faut
quoi qu'il arrivent toutes les enseignes.
j'ai une piste qui donne de bons resultats mais je n'aime pas beaucoups le
code que j'ai fait !
"Christophe Lephay" <christophe-lephay@wanadoo.fr> a écrit dans le message
de news:472f5101$0$25928$ba4acef3@news.orange.fr...
select cle_enseignes, count(*) as nb from #toto
where cle_sp in
(select cle_sp from #toto group by cle_sp having count(*) > 1)
group by cle_enseignes
Ok :
select toto1.cle_enseignes, nb from #toto toto1
left join (select cle_enseignes, count(*) as nb from #toto
where cle_sp in
(select cle_sp from #toto group by cle_sp having count(*) > 1)
group by cle_enseignes) toto2
on toto1.cle_enseignes = toto2.cle_enseignes
mais ton cas ne les couvre pas tous ! je n'ai que les cas qui sont dans plusieures enseignes hors ils me faut quoi qu'il arrivent toutes les enseignes.
j'ai une piste qui donne de bons resultats mais je n'aime pas beaucoups le code que j'ai fait !
"Christophe Lephay" a écrit dans le message de news:472f5101$0$25928$
select cle_enseignes, count(*) as nb from #toto where cle_sp in (select cle_sp from #toto group by cle_sp having count(*) > 1) group by cle_enseignes
Ok :
select toto1.cle_enseignes, nb from #toto toto1 left join (select cle_enseignes, count(*) as nb from #toto where cle_sp in (select cle_sp from #toto group by cle_sp having count(*) > 1) group by cle_enseignes) toto2 on toto1.cle_enseignes = toto2.cle_enseignes
Une fois encore, j'ai pas testé...
Christophe Lephay
"Christophe Lephay" a écrit dans le message de news: 472f607f$0$27399$
"christophe" a écrit dans le message de news:
mais ton cas ne les couvre pas tous ! je n'ai que les cas qui sont dans plusieures enseignes hors ils me faut quoi qu'il arrivent toutes les enseignes.
j'ai une piste qui donne de bons resultats mais je n'aime pas beaucoups le code que j'ai fait !
"Christophe Lephay" a écrit dans le message de news:472f5101$0$25928$
select cle_enseignes, count(*) as nb from #toto where cle_sp in (select cle_sp from #toto group by cle_sp having count(*) > 1) group by cle_enseignes
Ok :
select toto1.cle_enseignes, nb from #toto toto1 left join (select cle_enseignes, count(*) as nb from #toto where cle_sp in (select cle_sp from #toto group by cle_sp having count(*) > 1) group by cle_enseignes) toto2 on toto1.cle_enseignes = toto2.cle_enseignes
Une fois encore, j'ai pas testé...
PS : essaie de répondre en fin de message plutôt qu'au début, ça devient vite illisible sinon au fur et à mesure que se poursuit l'échange.
"Christophe Lephay" <christophe-lephay@wanadoo.fr> a écrit dans le message
de news: 472f607f$0$27399$ba4acef3@news.orange.fr...
"christophe" <christophe@digital16-9.com> a écrit dans le message de news:
DA7408BC-7162-4696-A1DE-1457D1D02893@microsoft.com...
mais ton cas ne les couvre pas tous !
je n'ai que les cas qui sont dans plusieures enseignes hors ils me faut
quoi qu'il arrivent toutes les enseignes.
j'ai une piste qui donne de bons resultats mais je n'aime pas beaucoups
le code que j'ai fait !
"Christophe Lephay" <christophe-lephay@wanadoo.fr> a écrit dans le
message de news:472f5101$0$25928$ba4acef3@news.orange.fr...
select cle_enseignes, count(*) as nb from #toto
where cle_sp in
(select cle_sp from #toto group by cle_sp having count(*) > 1)
group by cle_enseignes
Ok :
select toto1.cle_enseignes, nb from #toto toto1
left join (select cle_enseignes, count(*) as nb from #toto
where cle_sp in
(select cle_sp from #toto group by cle_sp having count(*) > 1)
group by cle_enseignes) toto2
on toto1.cle_enseignes = toto2.cle_enseignes
Une fois encore, j'ai pas testé...
PS : essaie de répondre en fin de message plutôt qu'au début, ça devient
vite illisible sinon au fur et à mesure que se poursuit l'échange.
"Christophe Lephay" a écrit dans le message de news: 472f607f$0$27399$
"christophe" a écrit dans le message de news:
mais ton cas ne les couvre pas tous ! je n'ai que les cas qui sont dans plusieures enseignes hors ils me faut quoi qu'il arrivent toutes les enseignes.
j'ai une piste qui donne de bons resultats mais je n'aime pas beaucoups le code que j'ai fait !
"Christophe Lephay" a écrit dans le message de news:472f5101$0$25928$
select cle_enseignes, count(*) as nb from #toto where cle_sp in (select cle_sp from #toto group by cle_sp having count(*) > 1) group by cle_enseignes
Ok :
select toto1.cle_enseignes, nb from #toto toto1 left join (select cle_enseignes, count(*) as nb from #toto where cle_sp in (select cle_sp from #toto group by cle_sp having count(*) > 1) group by cle_enseignes) toto2 on toto1.cle_enseignes = toto2.cle_enseignes
Une fois encore, j'ai pas testé...
PS : essaie de répondre en fin de message plutôt qu'au début, ça devient vite illisible sinon au fur et à mesure que se poursuit l'échange.
christophe
voila un exemple avec le resultat attendu, comment le rendre plus corporate car si j'ai des nouvelles enseignes faut refaire les requetes !
CREATE TABLE #TOTO (ID INT IDENTITY(1,1), CLE_SP BIGINT, CLE_ENSEIGNES INT)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 2) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 2) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (4, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (5, 3)
SELECT SUM(e1) AS T1, SUM(e2) AS T2, SUM(e3) AS T3 FROM ( SELECT CASE WHEN CLE_ENSEIGNES = 1 THEN 1 ELSE 0 END AS E1, CASE WHEN CLE_ENSEIGNES = 2 THEN 1 ELSE 0 END AS E2, CASE WHEN CLE_ENSEIGNES = 3 THEN 1 ELSE 0 END AS E3 FROM #TOTO WHERE CLE_SP IN ( SELECT CLE_SP FROM #TOTO WHERE CLE_ENSEIGNES = 1) ) Z UNION all SELECT SUM(e1) AS T1, SUM(e2) AS T2, SUM(e3) AS T3 FROM ( SELECT CASE WHEN CLE_ENSEIGNES = 1 THEN 1 ELSE 0 END AS E1, CASE WHEN CLE_ENSEIGNES = 2 THEN 1 ELSE 0 END AS E2, CASE WHEN CLE_ENSEIGNES = 3 THEN 1 ELSE 0 END AS E3 FROM #TOTO WHERE CLE_SP IN ( SELECT CLE_SP FROM #TOTO WHERE CLE_ENSEIGNES = 2) ) Z UNION all SELECT SUM(e1) AS T1, SUM(e2) AS T2, SUM(e3) AS T3 FROM ( SELECT CASE WHEN CLE_ENSEIGNES = 1 THEN 1 ELSE 0 END AS E1, CASE WHEN CLE_ENSEIGNES = 2 THEN 1 ELSE 0 END AS E2, CASE WHEN CLE_ENSEIGNES = 3 THEN 1 ELSE 0 END AS E3 FROM #TOTO WHERE CLE_SP IN ( SELECT CLE_SP FROM #TOTO WHERE CLE_ENSEIGNES = 3) ) Z
DROP TABLE #TOTO
voila un exemple avec le resultat attendu, comment le rendre plus corporate
car si j'ai des nouvelles enseignes faut refaire les requetes !
CREATE TABLE #TOTO (ID INT IDENTITY(1,1), CLE_SP BIGINT, CLE_ENSEIGNES INT)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 1)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 2)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 3)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 1)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 3)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 1)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 2)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 3)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (4, 3)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (5, 3)
SELECT SUM(e1) AS T1, SUM(e2) AS T2, SUM(e3) AS T3
FROM (
SELECT
CASE WHEN CLE_ENSEIGNES = 1 THEN 1 ELSE 0 END AS E1,
CASE WHEN CLE_ENSEIGNES = 2 THEN 1 ELSE 0 END AS E2,
CASE WHEN CLE_ENSEIGNES = 3 THEN 1 ELSE 0 END AS E3
FROM #TOTO
WHERE CLE_SP IN ( SELECT CLE_SP FROM #TOTO WHERE CLE_ENSEIGNES = 1)
) Z
UNION all
SELECT SUM(e1) AS T1, SUM(e2) AS T2, SUM(e3) AS T3
FROM (
SELECT
CASE WHEN CLE_ENSEIGNES = 1 THEN 1 ELSE 0 END AS E1,
CASE WHEN CLE_ENSEIGNES = 2 THEN 1 ELSE 0 END AS E2,
CASE WHEN CLE_ENSEIGNES = 3 THEN 1 ELSE 0 END AS E3
FROM #TOTO
WHERE CLE_SP IN ( SELECT CLE_SP FROM #TOTO WHERE CLE_ENSEIGNES = 2)
) Z
UNION all
SELECT SUM(e1) AS T1, SUM(e2) AS T2, SUM(e3) AS T3
FROM (
SELECT
CASE WHEN CLE_ENSEIGNES = 1 THEN 1 ELSE 0 END AS E1,
CASE WHEN CLE_ENSEIGNES = 2 THEN 1 ELSE 0 END AS E2,
CASE WHEN CLE_ENSEIGNES = 3 THEN 1 ELSE 0 END AS E3
FROM #TOTO
WHERE CLE_SP IN ( SELECT CLE_SP FROM #TOTO WHERE CLE_ENSEIGNES = 3)
) Z
voila un exemple avec le resultat attendu, comment le rendre plus corporate car si j'ai des nouvelles enseignes faut refaire les requetes !
CREATE TABLE #TOTO (ID INT IDENTITY(1,1), CLE_SP BIGINT, CLE_ENSEIGNES INT)
INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 2) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (1, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (2, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 1) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 2) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (3, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (4, 3) INSERT INTO #TOTO (CLE_SP, CLE_ENSEIGNES) VALUES (5, 3)
SELECT SUM(e1) AS T1, SUM(e2) AS T2, SUM(e3) AS T3 FROM ( SELECT CASE WHEN CLE_ENSEIGNES = 1 THEN 1 ELSE 0 END AS E1, CASE WHEN CLE_ENSEIGNES = 2 THEN 1 ELSE 0 END AS E2, CASE WHEN CLE_ENSEIGNES = 3 THEN 1 ELSE 0 END AS E3 FROM #TOTO WHERE CLE_SP IN ( SELECT CLE_SP FROM #TOTO WHERE CLE_ENSEIGNES = 1) ) Z UNION all SELECT SUM(e1) AS T1, SUM(e2) AS T2, SUM(e3) AS T3 FROM ( SELECT CASE WHEN CLE_ENSEIGNES = 1 THEN 1 ELSE 0 END AS E1, CASE WHEN CLE_ENSEIGNES = 2 THEN 1 ELSE 0 END AS E2, CASE WHEN CLE_ENSEIGNES = 3 THEN 1 ELSE 0 END AS E3 FROM #TOTO WHERE CLE_SP IN ( SELECT CLE_SP FROM #TOTO WHERE CLE_ENSEIGNES = 2) ) Z UNION all SELECT SUM(e1) AS T1, SUM(e2) AS T2, SUM(e3) AS T3 FROM ( SELECT CASE WHEN CLE_ENSEIGNES = 1 THEN 1 ELSE 0 END AS E1, CASE WHEN CLE_ENSEIGNES = 2 THEN 1 ELSE 0 END AS E2, CASE WHEN CLE_ENSEIGNES = 3 THEN 1 ELSE 0 END AS E3 FROM #TOTO WHERE CLE_SP IN ( SELECT CLE_SP FROM #TOTO WHERE CLE_ENSEIGNES = 3) ) Z