Analyse croisée code SQL

Fermé
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 - 25 juil. 2009 à 14:46
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 - 28 juil. 2009 à 15:48
Bonjour,

Je souhaiterai pouvoir executer une requete SQL qui me renverrai une analyse croisée d'une Table.
Pour être plus précis je souhaiterai obtenir exactement le resultat du premier exemple du paragraphe 5 de ce tutoriel: http://cerig.efpg.inpg.fr/tutoriel/bases-de-donnees/chap16.h­tm
Sauf que la colonne U est en fait dans mon cas est composée de plusieurs colonnes mais bon ca change pas grand chose je suppose.

Je ne trouve que des explications et des façon de faire sous éditeur mais pas de code.
Si quelqu'un connait un lien SVP.

Merci
Mich


A voir également:

6 réponses

soleil_levant Messages postés 393 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 14 avril 2011 32
25 juil. 2009 à 16:10
Salut,
Ton lien ne fonctionne pas :( PEux tu le modifier !
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
25 juil. 2009 à 19:21
Salut,
Désolé je n'avais pas vérifié, il ne passe pas.
C'est le paragraphe 5 du chapitre 16:
http://cerig.pagora.grenoble-inp.fr/tutoriel/bases-de-donnees/
Merci à toi de regarder, c'est cool.

Mich
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
26 juil. 2009 à 11:50
salut


tu peu nous montrer le code que tu essai?
syntax doit ressembler a ca

INSERT INTO perso ( nom, prenom, age )
SELECT nom, prenom, age
FROM personne;

j insert dans la table perso (les champ nom prenom age
je prend les champ nom,prenom,age
dela table personne

voila
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
27 juil. 2009 à 13:46
Salut,

Désolé pour le temps de réponse mais il y a des coupures d'électricité dans mon entreprise.
Je ne pense pas que ton code fasse ce que je recherche, c'est pour ajouter dans une table ayant des colonnes identiques non?
En fait je pars d'une table qui a cette description:
- DATE
- Abscisse1
- Abscisse 2
- NomProduit
- ID_Ordonnée
- Valeur de l'ordonnée

Je peux avoir 1 à N noms de produit et 1 à M ordonnées.

Je souhaiterai un code SQL me renvoyant une table de la forme :

- DATE
- Abscisse1
- Abscisse 2
- NomProduit 1 pour Ordonnée 1
...
- NomProduit 1 pour Ordonnée M
...
...
- NomProduit N pour Ordonnée 1
...
- NomProduit N pour Ordonnée M

La forme du resultat est donc variable pour chaque cas et la table remplit avec les valeurs des ordonnées.
J'espere etre assez clair. Le but est d'avoir des colonnes toutes pretes à être tracé l'une en fonction de l'autre.

Je pense qu'il faut avoir un code SQL qui:
- créer une table dynamiquement en fonction du contenu de la première.
- remplir par succession de requete les cellules.

Je dois faire faire un max de trraitement par le serveur car il y a plusieurs dizaines voir centaines de lignes à traiter et en faisant tout par programmation c'est trop long.
Le problème c'est que je débute en SQL, que je suis déjà fort en retard pour mon projet et que pendant 3 semaines on a des coupures de courant quotidienne donc c'est pas facile pour avancer et apprendre.

Si vous pouvez me guider juste sur un exemple de code pour me lancer ca serai sympa.
Je pense pouvoir donner un début de code vers ce soir.
Merci
Mich
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
28 juil. 2009 à 09:48
Bon suite à une discussion sur un autre forum, apparement c'est impossible tout d'un coup à part en PL/SQL.
Je suis donc parti sur la création de la table par programmation et de ensuite de trouver un alogorithme de passage de colonnes en lignes le plus optimisé possible.
Si vous savez comment je peux le faire en SQL ça serait sympa, mais bon dans ce cas aussi il faudra que j'adapte le code par programmation!
Sinon je pourrai peut être trouvé autre chose de pas trop lent (Les ajout multiples sur WinDev --> Pan!!!!!).

Mich
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ZMEX Messages postés 47 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 27 septembre 2010 16
28 juil. 2009 à 11:31
Bonjour,

j'ai à peu près le même problème

j'utilise cette requête pour faire un tableau croisé:

TRANSFORM Count(test_délais.Tranche) AS [CompteDeTranche]
SELECT test_délais.Ets, test_délais.Règlement, Count(test_délais.Délais) AS [Total de Délais], SUM((test_délais.[Mnt crédit])-(test_délais.[Mnt débit])) AS Montant
FROM test_délais
where Sum(test_délais.[Mnt crédit]-test_délais.[Mnt débit])
GROUP BY test_délais.Ets, test_délais.Règlement
PIVOT (test_délais.Tranche);

ma requête est juste sauf qu'en excel cela marche bien si on veut ajouter un autre agrégat dans l'agrégat. c-à-d je veux la ligne des montant aussi pour chaque tranche. jusque là je n'affiche que le total. j'ai fait la même chose sur excel cela marche très bien, mais j'essaie d'allimenter les résultats continuellement en ODBC pour pouvoir faire des statistiques plut tard.
(access 2003)
merci de m'illuminer
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
28 juil. 2009 à 15:48
J'ai trouvé une solution en construisant un code par programmation en fonction de mon tableau de départ:

SELECT DATEHEURE,VAL_MetBC,VAL_AbsSup, 
MAX( CASE WHEN ID_CARACT=<ID1> AND STATUT=<Prod1> THEN VAL_CARACT END) as 1 
/* répétez la création de max en chageant les ID pour avoir toutes les combinaisons possibles*/
FROM SADD_IMP_VAL_TMP  
GROUP BY DATEHEURE,VAL_MetBC,VAL_AbsSup


Ca devrait marcher pour moi d'après mes premiers test, je sais pas si ca peut t'aider.
Je suis sur Oracle 10g, je crois qu'il n'y pas de PIVOT.
0