Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Tabelle transponieren (https://www.delphipraxis.net/188202-tabelle-transponieren.html)

API 9. Feb 2016 10:25

Datenbank: MS SQL Server • Version: 2008 • Zugriff über: SSMS

Tabelle transponieren
 
Hoin,

Eine Tabelle (Table1) ist wie folgt aufgebaut. Die Werte in der Saplte "ID" und "FIELD_NAME" sind unique, d.h. kommen nicht mehrfach vor.

ID FIELD_NAME
1732 Field_1
1749 Field_2
1750 Field_3
1768 Field_4
1769 Field_5
1771 Field_6
1778 Field_7

Nun brauche ich eine Abfrage, welche die Tabelle transponiert:


Field_1 Field_2 Field_3 Field_4 Field_5 Field_6 Field_7
1732 1749 1750 1768 1769 1771 1778

Wie kann ich das umsetzen?

frankyboy1974 9. Feb 2016 10:37

AW: Tabelle transponieren
 
hallo,

schau mal hier

https://technet.microsoft.com/de-de/...ql.105%29.aspx

mfg

API 9. Feb 2016 10:54

AW: Tabelle transponieren
 
Danke für den Link. Verstehe jedoch nicht ganz, was hier angegeben werden soll, da ja nichts aggregiert werden soll :roll:

Zitat:

<Aggregationsfunktion>(<Spalte, die aggregiert wird>)

jobo 9. Feb 2016 11:02

AW: Tabelle transponieren
 
Pivot erledigt die Transformation, ich glaub es muss kein Aggregat sein.
Wenn doch, nimm halt eins, das nicht weh tut, also nichts macht in dem Fall.

frankyboy1974 9. Feb 2016 11:02

AW: Tabelle transponieren
 
hallo,

ich habs jetzt nicht ausprobiert, aber

Zitat:

indem die eindeutigen Werte einer Spalte des Ausdrucks in mehrere Spalten der Ausgabe versetzt werden und dabei gegebenenfalls Aggregationen für verbliebene Spaltenwerte erfolgen,
mfg

rapante 9. Feb 2016 11:04

AW: Tabelle transponieren
 
Das könnte hilfreich sein (Dynamic Pivot Version): http://stackoverflow.com/questions/1...nd-rows-in-sql

API 9. Feb 2016 11:23

AW: Tabelle transponieren
 
So scheint es zu funktionieren. Jedoch muss man, IMO, bei PIVOT ein Aggregat angeben.

Code:
DECLARE @cols AS NVARCHAR(MAX),
    @query AS NVARCHAR(MAX)

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(FIELD_NAME)
                    from Table1

            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)')
        ,1,1,'')

set @query = 'SELECT ' + @cols + '
             from
             (
                select FIELD_NAME, ID
                from Table1
         
            ) x
            pivot
            (
                max(ID)
                for FIELD_NAME in (' + @cols + ')
            ) p '

execute(@query)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz