Aide sur un Group by

Aide sur un Group by - SQL/NoSQL - Programmation

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 :)
 
 
 
 
 
 

Reply

Marsh Posté le 21-05-2010 à 17:23:59   

Reply

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 :o

Reply

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 ;(

Reply

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 [:joce].


Message édité par TotalRecall le 22-05-2010 à 11:11:47

---------------
Topic .Net - C# @ Prog
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed