comment sélectionner les colonnes que de lignes?
Donc, j'ai cherché partout et j'ai trouvé des choses de similaire à mon problème, mais j'ai besoin de plus d'aide pour obtenir une solution réelle.
Je suis en train de construire une requête qui sera de retour 2 colonnes de données, la première colonne devrait être une liste de noms de colonnes elles-mêmes et le second devrait être la valeur de cette colonne.
Visuellement il devrait ressembler à ceci
Column1 Column2
------- -------
columnA value_of_columnA
columnB value_of_columnB
... ...
Je suis sûr que cela va exiger SQL dynamique à réaliser, mais je n'ai aucune idée de comment même de commencer la création de la requête.
Toute aide est très appréciée!
Votre question n'a aucune réelle de détails - ce que la table(s) êtes-vous d'affaire, et ce sont la colonne type de données? La Version de SQL Server, pls.
quelle version de SQL Server en particulier? Et vous comptez seulement avoir 1 ligne de données, ou va la Colonne 1 nom de la colonne et de toutes les autres colonnes les données pour cette colonne?
Je peux comprendre désireux de faire pivoter les lignes en colonnes, mais les colonnes en lignes? De quoi êtes-vous en train d'essayer de faire?
Désolé pour le manque de détail, la requête est en cours d'exécution à l'encontre d'un mssql 2000 db. La colonne 1 est uniquement destiné à être column_names... comme ce que cette requête serait tirer SÉLECTIONNEZ COLUMN_NAME DE INFORMATION_SCHEMA.Les colonnes OÙ TABLE_NAME = 'table' et colonne2 serait les informations extraites à partir de cette requête SELECT colonne1, colonne2, colonne3... à PARTIR de la table OÙ blah = 'bla' Sauf que moi j'ai besoin de cette requête pour être extrait de façon dynamique en fonction de ce que la première requête tire, où colonne1, colonne2, colonne3 devra être complété avec les résultats de la première requête. Aussi, toutes les données de la deuxième colonne devrait être de type boolean
Je pose la question, pourquoi sur terre serait vous voulez faire cela? À moins que votre table a un seul enregistrement, il n'a pas de sens.
quelle version de SQL Server en particulier? Et vous comptez seulement avoir 1 ligne de données, ou va la Colonne 1 nom de la colonne et de toutes les autres colonnes les données pour cette colonne?
Je peux comprendre désireux de faire pivoter les lignes en colonnes, mais les colonnes en lignes? De quoi êtes-vous en train d'essayer de faire?
Désolé pour le manque de détail, la requête est en cours d'exécution à l'encontre d'un mssql 2000 db. La colonne 1 est uniquement destiné à être column_names... comme ce que cette requête serait tirer SÉLECTIONNEZ COLUMN_NAME DE INFORMATION_SCHEMA.Les colonnes OÙ TABLE_NAME = 'table' et colonne2 serait les informations extraites à partir de cette requête SELECT colonne1, colonne2, colonne3... à PARTIR de la table OÙ blah = 'bla' Sauf que moi j'ai besoin de cette requête pour être extrait de façon dynamique en fonction de ce que la première requête tire, où colonne1, colonne2, colonne3 devra être complété avec les résultats de la première requête. Aussi, toutes les données de la deuxième colonne devrait être de type boolean
Je pose la question, pourquoi sur terre serait vous voulez faire cela? À moins que votre table a un seul enregistrement, il n'a pas de sens.
OriginalL'auteur Shaded | 2009-10-16
Vous devez vous connecter pour publier un commentaire.
Cela devrait fonctionner pour tout le tableau, mais dans mon exemple, je viens de créer un test. Vous devez définir le nom de la table dans @YourTableName. Aussi, vous devez définir @YourTableWhere afin de limiter les résultats à une seule ligne, sans quoi le résultat semble étrange avec plusieurs lignes mélangées.
essayez ceci:
De SORTIE:
MODIFIER
Pour compatible avec SQL Server 2000, vous devez être en mesure de remplacer de type varchar(max) varchar(8000) et à la place de la
SELECT @YourQuery
requête dans le code ci-dessus:OriginalL'auteur KM.
OriginalL'auteur Chris Ballance
Vous pouvez toujours faire quelque chose comme ceci
OriginalL'auteur kemiller2002
Ma réponse à cette question permettra de travailler plus facilement avec SQL Server 2000, car il n'utilise pas les fonctionnalités XML de SQL Server 2005.
OriginalL'auteur Cade Roux
Vous n'êtes pas très clair quant à la manière de la présentation de votre rapport et de ce que vous générez. Êtes-vous à l'aide des résultats directs de l'outil de requête pour générer votre "rapport"? Dans ce cas, il me semble que vous essayez de marteler un clou à l'aide d'un tournevis. Utiliser le bon outil pour le travail.
Le langage SQL directement, ne doit pas être utilisé pour l'installation de votre présentation des données pour générer votre rapport. Vraiment, c'est une idée idiote. Le fait que vous peut écrire un rapport avec straight-up instructions SQL ne signifie pas que vous devrait.
Vous devriez vraiment générer votre rapport à l'aide d'un programme d'application que vous écrivez vous-même, ou un outil de génération de rapport Crystal Reports.
Programme d'Application écrite par vous-même: Si vous utilisez un curseur de l'objet de requête de la base de données, vous pouvez simplement obtenir les noms des colonnes à partir de cet objet curseur. Le problème est résolu.
Outil de Génération de rapport: habituellement, ils offrent une facilité de représenter la dynamique de données qui pourraient apparaître.
De toute façon, je pense que vous devez repenser votre approche de ce.
OriginalL'auteur J. Polfer