etnobommel1989
Goto Top

SQL aus einer Abfrage heraus eine Differenz bilden

Ich habe eine Abfrage erstellt, wo die erste Spalte die Kostenstelle, die zweite Grundgebühr ist, dann D1, D2, E-Plus, O2, Gesamt

Nun will ich noch eine Spalte ergeänzen. Und zwar die Festnetzkosten.

Diese ergeben sich dann logischerweise aus Gesamt - D1-D2-O2-E-Plus=Festnetz.

Wie kann ich einen Rechenausdruck mit in die selbe Abfrage bringen???

Geht so etwas überhgaupt???


Danke

Content-ID: 137732

Url: https://administrator.de/contentid/137732

Ausgedruckt am: 26.11.2024 um 12:11 Uhr

nxclass
nxclass 09.03.2010 um 08:28:28 Uhr
Goto Top
Geht so etwas überhgaupt???
...na klar!!!

Wenn Du SQL Abfragen verschachteln kannst:
SELECT *, `gesamt`-`d1`-`d2`-`o2`-`eplus` AS `festnetz` FROM (
/* deine jetzige Abfrage */
);
... oder Du baust es analog in deine jetzige Anfrage ein.
etnobommel1989
etnobommel1989 09.03.2010 um 08:42:13 Uhr
Goto Top
Ja danke des klappt so weit super nur ist es mit der umbenennung und der Anordnung der Spalten irgendwie blöd, weil dies nicht so richtig geht.

Ich geb dir ma den Quelltext wie er jezz ist!!

SELECT Gesamt-D1-D2-E_Plus-O2-Grundgebühr, *
FROM [SELECT Januar_2010.Kostenstelle, Sum(IIf(InStr([Volumen],"---")>0,[Anteil_Euro],0)) AS Grundgebühr, Sum(IIf(InStr([leistungen],"T-Mobile")>0,[Anteil_Euro],0)) AS D1, Sum(IIf(InStr([leistungen],"Vodafone")>0,[Anteil_Euro],0)) AS D2, Sum(IIf(InStr([leistungen],"E-Plus")>0,[Anteil_Euro],0)) AS E_Plus, Sum(IIf(InStr([leistungen],"O2")>0,[Anteil_Euro],0)) AS O2, Sum(Januar_2010.Anteil_Euro) AS Gesamt
FROM Januar_2010
GROUP BY Januar_2010.Kostenstelle
HAVING (((Januar_2010.Kostenstelle)=[Kostenstelle:]))]. AS [%$##@_Alias];

Außerdem fügt es automatisch bei der HVING Klausel dieses . AS [%$###@_Alias] ein, welches davor noch nicht da war.
nxclass
nxclass 09.03.2010 um 09:00:56 Uhr
Goto Top
Außerdem fügt es automatisch bei der HVING Klausel dieses . AS [%$###@_Alias] ein, welches davor noch nicht da war.
... das ist OK so. Die Unterabfragen benötigen dieses Alias damit man in der Hauptabfrage erkennen kann welcher Wert woher kommt.

ist das M$ Access ?
SELECT
    D1,
    D2,
    E_Plus,
    O2,
    Gesamt-D1-D2-E_Plus-O2-Grundgebühr AS Festnetz,
    Gesamt
FROM
    [
        SELECT
            Januar_2010.Kostenstelle,
            Sum(IIf(InStr([Volumen],"---")>0,[Anteil_Euro],0)) AS Grundgebühr,  
            Sum(IIf(InStr([leistungen],"T-Mobile")>0,[Anteil_Euro],0)) AS D1,  
            Sum(IIf(InStr([leistungen],"Vodafone")>0,[Anteil_Euro],0)) AS D2,  
            Sum(IIf(InStr([leistungen],"E-Plus")>0,[Anteil_Euro],0)) AS E_Plus,  
            Sum(IIf(InStr([leistungen],"O2")>0,[Anteil_Euro],0)) AS O2,  
            Sum(Januar_2010.Anteil_Euro) AS Gesamt
        FROM Januar_2010
        GROUP BY Januar_2010.Kostenstelle
        HAVING (((Januar_2010.Kostenstelle)=[Kostenstelle:]))
    ]. AS [%$##@_Alias];

Das sollte doch auch gehen:
        SELECT
            Januar_2010.Kostenstelle,
            Sum(IIf(InStr([Volumen],"---")>0,[Anteil_Euro],0)) AS Grundgebühr,  
            Sum(IIf(InStr([leistungen],"T-Mobile")>0,[Anteil_Euro],0)) AS D1,  
            Sum(IIf(InStr([leistungen],"Vodafone")>0,[Anteil_Euro],0)) AS D2,  
            Sum(IIf(InStr([leistungen],"E-Plus")>0,[Anteil_Euro],0)) AS E_Plus,  
            Sum(IIf(InStr([leistungen],"O2")>0,[Anteil_Euro],0)) AS O2,  
            Sum(Januar_2010.Anteil_Euro) AS Gesamt,

            Sum(Januar_2010.Anteil_Euro) - 
            Sum(IIf(InStr([Volumen],"---")>0,[Anteil_Euro],0)) -  
            Sum(IIf(InStr([leistungen],"T-Mobile")>0,[Anteil_Euro],0)) -   
            Sum(IIf(InStr([leistungen],"Vodafone")>0,[Anteil_Euro],0)) -  
            Sum(IIf(InStr([leistungen],"E-Plus")>0,[Anteil_Euro],0)) -  
            Sum(IIf(InStr([leistungen],"O2")>0,[Anteil_Euro],0)) AS Festnetz  

        FROM Januar_2010
        GROUP BY Januar_2010.Kostenstelle
        HAVING (((Januar_2010.Kostenstelle)=[Kostenstelle:]))
etnobommel1989
etnobommel1989 09.03.2010 um 10:16:35 Uhr
Goto Top
Hab vielen Dank hat mir echt weiter geholfen!!!!!!!!!!!!111