Avatar billede kviller Novice
28. november 2012 - 19:52 Der er 3 kommentarer og
1 løsning

Lave et view fra flere rows i samme tabel

Jeg har en tabel, som hedder

[ID], [ArtID], [MetaName], [MetaValue]

MetaName er der 50 forskellige af, men de går igen og igen. Der er sådanne 50 for hver ArtID.

Jeg kunne godt tænke mig at lave et view hvor jeg har

ArtID, MetaValue1, MetaValue2, MetaValue3 osv osv op til 50.

De forskellige MetaNames kan jeg godt få med

SELECT Distinct [MetaName] FROM [akvariefisk].[dbo].[Art_Metadata]

Som giver mig de 50 forskellige navne, som jeg vil have som koloner i mit view.
Avatar billede arne_v Ekspert
28. november 2012 - 20:01 #1
50 self joins?
Avatar billede kviller Novice
28. november 2012 - 20:41 #2
Hmmm hvordan?
Avatar billede arne_v Ekspert
28. november 2012 - 20:53 #3
SELECT
t1.artid,
t1.metavalue AS metavalue1,
t2.metavalue AS metavalue2,
t3.metavalue AS metavalue3,
...
FROM tabel t1
JOIN tabel t2 ON t1.artid=t2.artid AND t2.metaname='X2'
JOIN tabel t3 ON t1.artid=t3.artid AND t3.metaname='X3'
...
WHERE t1.metaname='X1'
Avatar billede Sqleksperterne Nybegynder
04. februar 2013 - 22:32 #4
Hej Kviller,

Du kan benytte TSQL funktionen PIVOT til at "vende" din tabel.

En løsning kunne se ud nogenlunde som nedenstående hvor du udskifter MetaNameX med de faktiske værdier i din tabel:


Select ArtID, [MetaName1],[MetaName2],[MetaName3],....
FROM
    (
        Select ArtID, MetaValue
        From Art_Metadata
    ) as InnerTbl
    PIVOT
    (
        MAX(MetaValue)
        FOR MetaName in ([MetaName1],[MetaName2],[MetaName3],....)
    ) as PivotTbl


Med venlig hilsen

SQL Eksperterne fra www.it-craft.dk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester