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-Key: 137732

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

Printed on: April 19, 2024 at 14:04 o'clock

Member: nxclass
nxclass Mar 09, 2010 at 07:28:28 (UTC)
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.
Member: etnobommel1989
etnobommel1989 Mar 09, 2010 at 07:42:13 (UTC)
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.
Member: nxclass
nxclass Mar 09, 2010 at 08:00:56 (UTC)
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:]))
Member: etnobommel1989
etnobommel1989 Mar 09, 2010 at 09:16:35 (UTC)
Goto Top
Hab vielen Dank hat mir echt weiter geholfen!!!!!!!!!!!!111