Kann man Abfragen wiederverwenden ?



  • Gute Morgen !

    Ich würde gerne wissen ob man Abfrageergebnisse wiederverwenden kann.

    Im konkreten Fall berechne ich eine Liste von Werten und möchte in der nächsten Spalte aus diesen Werten eine Prozentangabe berechnen:

    SELECT
    ( SELECT count([ID]) FROM Tab01 WHERE [ID] = '01' ),
    ( SELECT count([ID]) FROM Tab01 WHERE [ID] = '01' )*100 / COUNT(ID),
    ...
    

    Nachdem ich das bei sehr vielen Attributen machen muss und manchmal mehrere Berechnungen nötig sind, ist das ganze natürlich nicht perfomant.
    Ich würde nun gerne das Statement

    ( SELECT count([ID]) FROM Tab01 WHERE [ID] = '01' ),
    

    einmal ausführen und dann mit diesen Werten bei den folgenden Abfragen weiter arbeiten.

    Ist das irgendwie möglich ?

    lG
    Andreas



  • Derzeit sieht es bei mir so aus:

    SELECT 
    (SELECT COUNT(ID) FROM TMP WHERE TMP.ID ='01')
    FROM  Tab01, ( SELECT ID, count(ID) AS CNT FROM Tab01) as TMP;
    

    Ich habe mir vorgestellt dass ich mit dem zweiten FROM-Statement eine Subtabelle anlege, die genau das Statement enthält das ich immer und immer wieder verwende. Aus dieser Subtabelle wollte ich dann die Daten lesen um Rechnerzeit zu sparen.

    Leider bekomme ich immer die Fehlemdung

    Invalid object name 'TMP'.
    


  • Du kannst ansonsten eine temporäre Tabelle erstellen, je nach dbms, die z.B. nach einer Transaktion gelöscht wird...


Anmelden zum Antworten