2010-04-28 11 views
4

Désolé - le titre de ma question est probablement aussi inepte à ma tentative de faire cela.Tableau lignes avec paramètre d'identification dans chaque ligne SQL SERVER 2008 dans une seule ligne

Je donne les résultats suivants (bien, similaire) dans une table dans un CMS

pageID key   value  

201  title   Page 201's title 
201  description This is 201 
201  author   Dave 
301  title   Page 301's title 
301  description This is 301 
301  author   Bob   

Comme vous l'avez sans doute deviné, ce que je dois est une requête qui produira:

pageID title    description  author 

201  Page 201's title This is page 201 Dave 
301  Page 301's title This is page 301 Bob 

Si quelqu'un pouvait aider, je serais éternellement reconnaissant - je sais que c'est "s'il vous plaît envoyez-moi le code" mais je suis absolument bloqué.

Merci d'avance.

+0

Astuce: http://msdn.microsoft.com/en-us/library/ms177410.aspx –

+0

Merci Mark - aura un regard quand le fonctionnement de mon cerveau! – LiverpoolsNumber9

Répondre

1

hack peut être

select a.pageID, a.value as Title, b.value as Description, c.value as Author from Table a 
    left outer join Table b on a.pageID = b.pageID and b.key = 'description' 
    left outer join Table c on a.pageID = c.pageID and c.key = 'author' 
where a.key = 'title' 

ne peut pas être la meilleure solution, mais il peut travailler pour vous.

+1

Merci Francisco - J'ai essayé mais chaque champ était rempli avec son nom d'alias au lieu de la valeur? Peut-être que je l'ai fait mal cependant. Merci beaucoup pour votre aide. – LiverpoolsNumber9

+0

Non, je l'ai mal écrit, changer le SELECT au lieu de a.key, b.key, c.key type a.value, etc, etc Mon mauvais, désolé. –

+0

Ah ok! Joli. Merci :) – LiverpoolsNumber9

2
Select PageId 
    , Min(Case When key = 'title' Then Value End) As Title 
    , Min(Case When key = 'description' Then Value End) As Description 
    , Min(Case When key = 'author' Then Value End) As Author 
From Table 
Group By PageId 
+0

Salut Thomas - c'est tout! Merci beaucoup en effet !! – LiverpoolsNumber9

+0

Thomas, cela fonctionne parfaitement, mais j'ai marqué la réponse de Fransisco - voir les commentaires. Merci quand même - j'ai appris quelque chose de vous deux. – LiverpoolsNumber9

Questions connexes