2009-04-01 6 views
4

J'ai une table d'équipement, une table des clients et une table clairsemée d'équipements et de clients. Je veux produire une requête qui renvoie un 1 si l'enregistrement d'équipement/table client existe et un 0 si ce n'est pas le cas pour chaque client. Il y a seulement un petit nombre de clients dans ce problème, donc ce que je veux revenir devrait ressembler à ceci:Colonnes dynamiques en cas de pivotement

EquipmentID Cust1 Cust2 Cust3 
----------- ----- ----- ----- 
     1234  1  0  1 
     1357  0  1  0 
     2234  1  0  0 

je peux utiliser un cross join pour obtenir une liste maîtresse des enregistrements possibles, mais qui renvoie les informations en lignes . Je veux le voir dans les colonnes, mais le mot clé PIVOT nécessite que je nomme les colonnes en premier. Ce dont j'ai besoin, c'est que les noms des colonnes (Cust1, Cust2 ...) soient dynamiques.

+0

Il serait probablement préférable de gérer ce type de transformation d'affichage dans la partie frontale si possible. –

Répondre

5

Si vous voulez faire cela, alors vous devez créer la chaîne de requête dynamiquement, puis la passer à la procédure stockée sp_execute. AFAIK, il n'y a pas moyen de le faire sans construire dynamiquement la chaîne de requête.

0

Si vous disposez d'un outil de reporting pratique, utilisez votre requête actuelle et créez un rapport "martix", "tableau croisé" ou "tableau croisé dynamique".

+0

J'essaye de faire ceci dans une page Web. Ce que je veux voir, c'est le code SQL pour accomplir cela. –

+0

SQL n'est toujours pas l'endroit le faire. Votre "outil de reporting" est maintenant votre langue web. Dans votre langue, vous avez la possibilité de parcourir votre jeu de manière à obtenir ce que vous voulez. Votre framework peut même avoir un type de pivot ou de classe de transposition pour le faire pour vous. –

Questions connexes