SQL Query, Zeilen in Spalten umändern

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von masteink.

    SQL Query, Zeilen in Spalten umändern

    Hallo,

    Ich habe folgende SQL Query (DB Access), die ich aus meinen VB.Net projekt starte:

    select a.weekly_snap as [Snapshot Date],b.project, b.state, b.amount
    from(

    select max(snapshot_date) as weekly_snap
    from table_1
    where snapshot_date >= 41821 and snapshot_date <= 41838
    group by ((datepart('yyyy', snapshot_date) & DATEPART('ww', snapshot_date)))
    )a

    Left Join
    (
    Select snapshot_date, state, count(state) As amount, project
    From table_1
    Where Snapshot_Date In
    (
    Select max(snapshot_date)
    From table_1
    where snapshot_date >= 41821 and snapshot_date <= 41838
    group by ((datepart('yyyy', snapshot_date) & DATEPART('ww', snapshot_date)))
    )
    and project in ('A', 'B')
    Group By snapshot_date, project, state
    ) b
    On b.snapshot_date= a.weekly_snap
    order by b.project, a.weekly_snap

    Daraus erhalte ich das folgende DataView (kleiner Auszug davon):
    Snapshot Dateprojectstateamount
    05.07.2014A
    New15
    05.07.2014
    AChanged5
    05.07.2014ATested11
    05.07.2014
    AFailed1
    05.07.2014
    BNew20
    05.07.2014
    BChanged8
    05.07.2014
    BTested4
    05.07.2014BFailed2


    Nun hab ich die Anforderung das die Tabelle im DataGridView anders dargestellt werden soll:

    Snapshot DateprojectNewChangedTestedFailed
    05.07.2014A155111
    05.07.2014B20842

    Meine Frage: Gibt es eine elegante Methode dies mittels SQL direkt umzusetzen?
    Oder einfach über die DataView drüber loopen und dementsprechend anordnen?

    Danke für jeden Tipp.

    Lg
    In Access direkt mit SQL geht das via Transform und Pivot.

    Ob das für .NET Anwendungen überhaupt noch die "richtige" herangehensweise ist mit zusammengebastelten SQL Queries zu arbeiten ist eine andere Frage. Es gibt ja das Entity Framework und typisierte DataSets.

    LG
    Das ist meine Signatur und sie wird wunderbar sein!
    ​In Access direkt mit SQL geht das via Transform und Pivot.Ob das für .NET Anwendungen überhaupt noch die "richtige" herangehensweise ist mit zusammengebastelten SQL Queries zu arbeiten ist eine andere Frage. Es gibt ja das Entity Framework und typisierte DataSets.LG


    Das hab ich schon versucht, jedoch bekomm ich es syntaktisch nicht ganz auf die Reihe.
    Könntest du mir posten was in das Transform und was in da pivot reinkommt?
    Also kannst du das nicht mit nem Group By lösen?
    Also nicht ganz so, aber du könntest damit zusammenfassen?

    EDIT:
    Also nach allem bis auf amount gruppieren und von Amount ne Summe.

    EDIT2:
    Ne Klasse zum Erstellen von Pivot Tabellen/Kreuztabellen hab ich hier mal gefunden:
    dotnet-snippets.de/snippet/pivot-tabelle-erstellen/971
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D