Pour créer des rapports, j'ai besoin de faire pivoter les résultats d'une requête unique sur chaque enregistrement. Ma déclaration actuelle est:Séquence de numérotation de valeurs uniques SQL pour Pivot
SELECT *
FROM Sales AS x
WHERE (select count(*) from Sales where customer_name=x.customer_name
and order_date>=x.order_date)<=5
ORDER BY customer_name, order_date, price;
Un échantillon de la sortie de la requête est:
customer_name order_date price
Company A 2009-02-01 800
Company A 2009-03-01 100
Company A 2009-04-01 200
Company A 2009-05-01 300
Company A 2009-06-01 500
Company B 2009-02-01 100
Company B 2009-02-01 800
Company B 2009-04-01 200
Company B 2009-05-01 300
Company B 2009-06-01 500
En fin de compte, l'information doit ressembler à ceci:
Customer_Name order_date1 price1 order_date2 price2 order_date3 price3 order_date4 price4 order_date5 price5
Company A 2009-02-01 800 2009-03-01 100 2009-04-01 200 2009-05-01 300 2009-06-01 500
Company B 2009-02-01 100 2009-02-01 800 2009-04-01 200 2009-05-01 300 2009-06-01 500
Je pense que je besoin d'ajouter une colonne pour "pivot_id" afin qu'il y ait un enregistrement commun pour chaque regroupement de sorte que le résultat de la requête avant le pivot ressemble à:
pivot_id customer_name order_date price
1 Company A 2009-02-01 800
2 Company A 2009-03-01 100
3 Company A 2009-04-01 200
4 Company A 2009-05-01 300
5 Company A 2009-06-01 500
1 Company B 2009-02-01 100
2 Company B 2009-02-01 800
3 Company B 2009-04-01 200
4 Company B 2009-05-01 300
5 Company B 2009-06-01 500
Quelle instruction SQL va générer un numéro d'enregistrement automatique pour chaque achat, mais aussi recommencer avec chaque customer_name ??
Travailler dans Access 2007 avec le générateur de code SQL. Ce serait génial si la solution est compatible avec Access.
Désolé pour la longueur. Merci d'avance.
Peu de questions: lent -TRÈS. -Affecte le même nombre à toutes les commandes avec le même prix, ce qui arrive fréquemment. En regardant l'exemple de jeu de données ci-dessus, la société B a eu deux achats le 1er février 2009, les deux achats sont affectés un pivot_id de 1. Avec quelques modifications, encore lent, mais fonctionne! Merci! –
Oui, le moteur de base de données Access n'est pas bien optimisé pour les sous-requêtes corrélées: (Envisagez de réécrire votre requête d'origine en utilisant TOP 5 pour éliminer la sous-requête * that * corrélée. – onedaywhen