2010-07-16 14 views
-2

HI,serveur de requêtes SQL

j'ai une table avec 5 colonnes

keyword D1 D2 D3 Total 
how  1 1 1 3 
are  0 0 2 2 
you  0 1 0 1 

je veux récupérer uniquement les colonnes compte où le nom commence par D pour former le tableau ci-dessus le résultat devrait être 3 s'il vous plaît Aidez-moi.

+2

Je ne peux pas donner un sens à ce sujet. Si vous formatez mieux la question et acceptez les réponses aux questions que vous avez déjà posées, vous obtiendrez peut-être une meilleure réponse. –

+1

Modifié le formatage pour afficher les données –

Répondre

1
SELECT 
    Keyword, D1, D2, D3, D1 + D2 + D3 AS Total 
FROM 
    MyTable 

Vous connaissez les 3 colonnes à partir D déjà: il est inepte de le faire de façon dynamique dans le cas où vous ajoutez une nouvelle colonne D4

1

@ vj4u, vous pouvez formater mieux vos données de table en éditant votre question, mettant en évidence les données de la table et en cliquant sur le bouton en forme comme ceci:

101 
010 

comme ceci:

keyword D1 D2 D3 Total 
how  1 1 1 3 
are  0 0 2 2 
you  0 1 0 1 
2
SELECT D1, 
     D2, 
     ...etc... 
     D3 
    FROM mytable; 

Je vous recommande de ne pas essayer de développer une méthode 'automatique' pour trouver quelles colonnes commencent par 'D'. Ce genre de chose ne finit jamais que par les larmes.

Modifications apportées au schéma si signifie des modifications aux commandes le lisant.

2

Si je comprends bien votre question, et je crois que SQL Server a les mêmes tables de métadonnées que Sybase est correct, alors quelque chose comme

select count(*) 
from sysobjects o, 
     syscolumns c 
where c.id = o.id 
and  o.type = 'U' -- user tables 
and  o.name = '<your_table_name>' 
and  c.name like 'D%' 

devrait donc l'affaire.

+0

Il avait l'habitude d'avoir ... maintenant remplacé dans SQL Server 2005. Nous avons aussi la syntaxe ANSI-92 JOIN ... – gbn