2009-12-22 4 views
0

Bonjour je traite des fichiers d'importation hostiles qui importation comme:fusionner plusieurs enregistrements dans la même table dans l'accès

timestamp position  name 
001   2   Jon 
001   3   Bob 
001   1   Ann 
001   4   Mike 
002   1   Joe 
002   2   Sue 
003   1   Jeff 
004   5   James 
004   1   Andy 
004   2   Beth 
004   4   Mitch 
004   3   Chris 

Et voudrais créer une nouvelle table qui affiche ainsi:

timestamp position1 position2 position3 position4  position5 
001   Ann   Jon   Bob   Mike 
002   Joe   Sue 
003   Jeff 
004   Andy   Beth   Chris  Mitch  James 

En parcourant ce forum le plus proche je suis venu à une solution est:

SELECT pos1.timestamp, pos1.name AS position1, pos2.name AS position2 
FROM table1 AS pos1 INNER JOIN table1 AS pos2 
ON pos1.timestamp = pos2.timestamp 
WHERE (((pos1.position)=1) AND ((pos2.position)=2)) 

Je ne peux pas comprendre comment t o étendre cela à mes spécifications, toute aide est très appréciée.

+0

Avez-vous obtenu le résultat que vous vouliez à la fin? –

Répondre

1

Essayez quelque chose comme ça

TRANSFORM First(Table.[name]) AS FirstOfname 
SELECT Table.[timestamp] 
FROM [Table] 
GROUP BY Table.[timestamp] 
PIVOT Table.[position]; 

J'ai créé cela en utilisant la MS Access Cross Tab Assistant de requête.

ont également un oeil à

What is a CrossTab Query?

Certains mieux explenation.

  • Cliquez sur l'onglet Créer.
  • Cliquez sur l'Assistant Requête.
  • Sélectionnez la deuxième option (Requête Crosstab Assistant) et appuyez sur OK.
  • Sélectionnez la table pour votre saisie et cliquez sur Suivant.
  • Sélectionnez Horodatage et cliquez sur la flèche (simple) pointant de gauche à droite, et appuyez sur suivant.
  • Sélectionner la position et appuyer sur suivant.
  • nom sera le champ restant, Sélectionnez Premier (le nombre par défaut est le nombre) et atteint le suivant.
  • Terminer la finition.

Il aurait dû enregistrer une requête appelée Table_Crosstab (ou quelque chose de similaire). Cliquez avec le bouton droit de la souris et sélectionnez la vue de conception. Sur le bouton Affichage, sélectionnez Vue SQL.

Vous devriez voir quelque chose de similaire à

TRANSFORM First(Table.name) AS FirstOfname 
SELECT Table.timestamp, First(Table.name) AS [Total Of name] 
FROM [Table] 
GROUP BY Table.timestamp 
PIVOT Table.position; 

De la deuxième ligne supprimer

, First(Table.name) AS [Total Of name] 

de sorte que vous vous retrouvez avec

TRANSFORM First(Table.name) AS FirstOfname 
SELECT Table.timestamp 
FROM [Table] 
GROUP BY Table.timestamp 
PIVOT Table.position; 

et qui devrait l'être. Sauvez et vous êtes prêt.

+0

Je ne comprends pas les généralités (ayant commencé sur l'accès aujourd'hui). Pouvez-vous être précis quant à ma situation particulière et ce que je dois faire pour obtenir la sortie désirée. Je vous remercie. – cubew00t

+0

OK, j'ai ajouté quelques étapes. Demandez si vous êtes coincé. –

1

Votre nouvelle table est un mauvais design. Que se passe-t-il lorsqu'il y a une sixième et une septième personne dans les données entrantes? Il sera également difficile de travailler avec quand vous avez besoin de retirer toutes les données par une personne spécifique, car vous devrez alors interroger cinq colonnes.