Abfrageergebnis in eigene Tabelle einfügen

Hans78

Benutzer
Beiträge
6
Hallo miteinander,

ich habe eine Datenbank mit mehreren Tabellen und möchte gewisse Informationen in eine andere Tabelle speichern.

Beispiel:
Ich habe ein Attribut "Kategorie" und folgende Abfrage:

use [database]
GO
SELECT COUNT (Fehlertyp)

from dbo.table_a

where Fehlertyp= 'Kategorie_A'
AND ([Status] = '1'
OR [Status] = '2'

Ergebnis:
2

where Fehlertyp= 'Kategorie_B'
AND ([Status] = '1'
OR [Status] = '2'

Ergebnis:
4

Das mache ich jetzt mit mehren Kategorien und erhalte so mehrere Ergebnisse. Da sich die Tabelle updated können sich die Werte im Laufe der Zeit ändern.

Die errechneten Werte würde ich jetzt gerne in eine eigenständige Tabelle (wöchentlich) speichern um so den Trend nachzuvollziehen.

Mit dem Befehl UNION weiß ich das ich die Spalten untereinander bekomme, aber ich verstehe noch nicht ganz wie ich diese Ergebnisse in eine Tabelle speichere?

Vorgestellt habe ich mir das so:

heutiges_Datum---Kategorie_A---Kategorie_B---Kategorie_C---[etc]
05.02.2015---2---4---5---[etc]
15.02.2015---3---4---6---[etc]
...
 
Werbung:
Ich habe ein Attribut "Kategorie" und folgende Abfrage:

use [database]
GO
SELECT COUNT (Fehlertyp)

from dbo.table_a

where Fehlertyp= 'Kategorie_A'
AND ([Status] = '1'
OR [Status] = '2'

Ergebnis:
2

where Fehlertyp= 'Kategorie_B'
AND ([Status] = '1'
OR [Status] = '2'

Ergebnis:
4

Das mache ich jetzt mit mehren Kategorien und erhalte so mehrere Ergebnisse.

Örks. Warum kein select fehlertyp, count(*) from ... where ... group by fehlertyp? Wäre zu einfach, oder?

Da sich die Tabelle updated können sich die Werte im Laufe der Zeit ändern.

Die errechneten Werte würde ich jetzt gerne in eine eigenständige Tabelle (wöchentlich) speichern um so den Trend nachzuvollziehen.

Mit dem Befehl UNION weiß ich das ich die Spalten untereinander bekomme, aber ich verstehe noch nicht ganz wie ich diese Ergebnisse in eine Tabelle speichere?

insert in ... select ...

Vorgestellt habe ich mir das so:

heutiges_Datum---Kategorie_A---Kategorie_B---Kategorie_C---[etc]
05.02.2015---2---4---5---[etc]
15.02.2015---3---4---6---[etc]
...

Schlechte Idee. Was pasiert, wenn eine neue Kategorie dazu kommt? Ansonsten habe ich hier und anderswo schon mehrfach gezeigt, wie man Zeilen zu Spalten macht. Aber nochmal: überdenke das noch einmal.
 
Das ist schon sehr abstrakt und ich bin mir nicht sicher ob das was du tust überhaupt sinnvoll ist.

Aber zu deinem Problem:
Code:
INSERT INTO zieltabelle(heutiges_datum,kategorie_A,kategorie_B)
SELECT    getdate() AS heutiges_datum,
        (

SELECT    count(Fehlertyp)
FROM    dbo.table_a
WHERE    Fehlertyp = 'Kategorie_A'
AND (    [Status] = '1'
OR        [Status] = '2' )

        ) AS Kategorie_A,
        (

SELECT    count(Fehlertyp)
FROM    dbo.table_a
WHERE    Fehlertyp = 'Kategorie_A'
AND (    [Status] = '1'
OR        [Status] = '2' )

        ) AS Kategorie_B
Was akretschmer sagt ist natürlich völlig richtig. GROUP BY ist einfacher und macht mehr Sinn. Wenn es aber tatsächlich pro Kategorie eine Spalte geben muss könnte man das auch so zurecht biegen.
 
Werbung:
Zurück
Oben