ehmarc
Messages postés393Date d'inscriptionmardi 2 décembre 2003StatutMembreDernière intervention29 septembre 2008
-
18 sept. 2006 à 12:19
ehmarc
Messages postés393Date d'inscriptionmardi 2 décembre 2003StatutMembreDernière intervention29 septembre 2008
-
27 sept. 2006 à 23:32
Salut,
Voila j'ai encor un soucis....
Je doit faire des group de 15000 ligne de donnée (ma table à 90 000 lignes)
Sous SQL server c'est pas top (à cause du top justement...)
Bon le but est simple toutes les 15000 ligne, jedoit ramener la somme d'un champ !
Bon plusieurs solution m'ont sauté à l'esprit :
- 1 rajouté un champ de comptage qui s'incrémente toutes les 15000 lignes (ce qui me permet ensuite de faire un group by sur ce champ avec le sum)
j'ai tenté de faire un update mais je sais pas récupérer le "max" de mon champ pour l'incrémenter
update PS_MM_LIGNE set COMPTEUR MAX(COMPTEUR)+1 select top 15000 DD_AMT_BASE from PS_MM_LIGNE where COMPTEUR 0
- 2 un select magique, mais j'ai pas trouvé
- 3 en dur dans mon code (mais il faut que je recalcul tout les trucs bref galere)
++
"Aucun de nous ne sait ce que nous savons tous, ensemble." Lao Tseu inventeur du "copier coller" [8D]
ehmarc
Messages postés393Date d'inscriptionmardi 2 décembre 2003StatutMembreDernière intervention29 septembre 2008 18 sept. 2006 à 15:20
Bon je m'auto répond (à prioris sa passe mais j'ai pas les droits sous l'analyseur de requete donc faut que je teste dans mon prog)
UPDATE MM_LIGNE
SET COUNTER = (
SELECT MAX(COUNTER)+1
FROM MM_LIGNE
GROUP BY COUNTER
HAVING COUNT(*)=15000)
SELECT top 15000 COUNTER
FROM MM_LIGNE
WHERE COUNTER = 0
++
"Aucun de nous ne sait ce que nous savons tous, ensemble." Lao Tseu inventeur du "copier coller" [8D]
cs_skweeky
Messages postés259Date d'inscriptionmercredi 3 mai 2006StatutMembreDernière intervention11 janvier 20108 22 sept. 2006 à 19:59
C'est en 2000 ou 2005 ?
Si c'est du 2005 regarde vers les PARTITION BY il y une fonction NTILE qui pourrait bien te servir, ou l'une des autres...
Si j'ai bien compris tu veux faire des totaux tous les 15000 enregistrements ? Avec une condition sur le group by ou pas, c'est à dire des sous-totaux par rappoprt à un ensemble de champs ?
Si c'est le cas tu as ROLLUP qui peut être utilisé après un GROUP BY
ehmarc
Messages postés393Date d'inscriptionmardi 2 décembre 2003StatutMembreDernière intervention29 septembre 2008 27 sept. 2006 à 23:32
en fait j'ai utilisé deux requete (un voyage m'as empeche de repondre plus tot j'ai bien le droit a des vacances aussi)
un select pour voir si il reste minimum une ligne
et ensuite je fait :
SET ROWCOUNT 15000
mon update
SET ROWCOUNT 0
++
"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller" [8D]