Aide sur un Group by - SQL/NoSQL - Programmation
Marsh Posté le 21-05-2010 à 17:55:54
Salut,
select Col1, Col2, count(Col1)
from tab_source
group by Col1
J'espère que tu partiras en week-end en paix
Marsh Posté le 21-05-2010 à 19:38:37
on ne peut pas avoir qu'une partie des colonnes dans le group by si on y fait référence ;(
Marsh Posté le 22-05-2010 à 11:11:35
Ben tu n'as pas besoin de Col2 là, on pourrait le retirer de la requête. Si j'ai bien compris tu as juste besoin d'affecter Col3 pour chaque valeur de col1.
tu dois pouvoir passer par une table temporaire :
select Col1, count(Col1)
into #stats
from tab_source
group by Col1
update tab_source
set col3 = (select from #stats where #stats.col1 = col1)
Ou si tu rames (je ne vois pas pkoi) et que tu as un nombre de valeurs pour Col1 restreint, tu les gères une à une. Tu fais un update qui englobe ton select.
Un truc du genre :
Update tab_source
set Col3 = (select count(col1) from tab_source where col1 = A)
where col1 = A
avertissement : ce post a été rédigé par un mec qui n'a rien testé, fait de moins en moins de SQL et s'est levé il y a 10 minutes .
Marsh Posté le 21-05-2010 à 17:23:59
Bonjour,
J'ai un petit problème :
Table Source (créée elle meme par un select)
Col1 Col2
1 A B
2 A C
3 B D
...
Ajout d'une col 3 qui correspont au nombre d'occurence de l'élément de la col1 dans la table
Table Cible
Col1 Col2 Col3
1 A B 2
2 A C 2
3 B D 1
Je pensais faire une requete du style :
Select
Col1
Col2
SELECT count(*) FROM Tab source GROUP BY A
FROM
(Select ....
Union
Select ...) Tab Source;
Mais visiblement Oracle ne reconnait pas Tab source au niveau du select count(*) ...
Si quelqu'un peut m'aider, je serais content