9
votes

Comment simuler l'impulsion dans l'accès?

Unkivot est disponible dans MS SQL-Server 2005, mais AFaik non dans MS Access 2010. Comment peut-il être implémenté avec des moyens à bord? Par exemple, j'ai une table xxx

et souhaitez avoir une table comme xxx

clé 452 est un cas particulier. Actuellement, je fais la rotation dans OLEDB / ATL C ++. Bien qu'il soit assez rapide, je suis toujours curieux. Quelle est l'instruction SQL la plus efficace pour Access 2010 ici?


0 commentaires

3 Réponses :


1
votes

Malheureusement, il n'y a pas de moyen facile de le faire avec accès. Vous pouvez le faire en utilisant un Union pour obtenir chaque valeur xxx


4 commentaires

Donc, il n'y a pas de solution générique? Nous devons utiliser une déclaration dépendante de données?


@Andreas Il n'y a pas de moyen rapide de le faire avec accès qui fait partie de sa chute.


Union supprimerait les valeurs non distinctes - pourquoi utiliser Union tout ?


@inetphantom Si vous voulez distinct, utilisez l'Union. Cela dépendrait de votre situation et de votre besoin.



13
votes

Cette requête ...

ID A B C key_field
-- - - - ---------
 1 x y z         3
 2 x y z        57
 1 x y z       199
 2 x y z       234
 1 x y z       452
 2 x y z       452


0 commentaires

0
votes
  1. Vous pouvez créer une table auxiliaire avec tous les noms de colonnes comme valeurs (Peut utiliser Excel Copier la première ligne de votre table pour Excel> Coller Spécial> Transpose) P> Li>

  2. Créez dans votre tableau une colonne d'incrément automatique et indexez cette colonne P> li>

  3. Créer une nouvelle critique de jointure croisée comme les suivantes p> li>

    SELECT ID, A, B, C
           , AUX_TABLE.KEY_FIELD
           , DLookUp("[" & [AUX_TABLE].[KEY_FIELD] & "]","TABLE","[ID] = " & [TABLE].[ID]) AS KEY_VALUE
    FROM TABLE, AUX_TABLE;
    

0 commentaires