Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#3

AW: Summenbildung über Query, oder doch doppelt abfragen

  Alt 10. Aug 2015, 18:53
Hallo,

wenn Du die Daten in einem "Rutsch" ausgibst, könnte das so funktionieren:
Code:
SQL.Add( 'SELECT');
             SQL.Add( ' A.NR,');
             SQL.Add( ' sum( OA.PREIS ) AS Sum_Umsatz,');
             SQL.Add( ' sum( OA.EK_PREIS ) AS Sum_EK,');
             SQL.Add( ' sum( OA.MENGE ) AS Sum_Anzahl,');
             SQL.Add( ' ( 100 *( 1 - SUM( OA.EK_PREIS ) / IIF( SUM( OA.PREIS ) = 0 ,0.01 , SUM( OA.PREIS )))) AS EBITDA');
             SQL.Add( ' FROM');
             SQL.Add( ' WHERE');
             SQL.Add( ' AND OA.VKDAT >= '+QuotedStr(FormatDateTime('DD.MM.YYYY',StartOfTheMonth(jvdtmpckr_Start.Date))));
             SQL.Add( ' AND OA.VKDAT<= '+QuotedStr(FormatDateTime('DD.MM.YYYY',EndOfTheMonth(jvdtmpckr_Ende.Date))));
             SQL.Add( ' GROUP BY');
             SQL.Add( ' A.NR,');
SQL.Add( 'union all'); // hierdurch werden die Ergebnisse mehrerer Abfragen unsortiert hintereinander ausgegeben.
SQL.Add( 'SELECT');
             SQL.Add( ' A.NR,');
             SQL.Add( ' sum( OA.PREIS ) AS Sum_Umsatz,');
             SQL.Add( ' sum( OA.EK_PREIS ) AS Sum_EK,');
             SQL.Add( ' sum( OA.MENGE ) AS Sum_Anzahl,');
             SQL.Add( ' ( 100 *( 1 - SUM( OA.EK_PREIS ) / IIF( SUM( OA.PREIS ) = 0 ,0.01 , SUM( OA.PREIS )))) AS EBITDA');
             SQL.Add( ' FROM');
             SQL.Add( ' WHERE');
             SQL.Add( ' AND OA.VKDAT >= '+QuotedStr(FormatDateTime('DD.MM.YYYY',StartOfTheMonth(jvdtmpckr_Start.Date))));
             SQL.Add( ' AND OA.VKDAT<= '+QuotedStr(FormatDateTime('DD.MM.YYYY',EndOfTheMonth(jvdtmpckr_Ende.Date))));
Zumindest unter Oracle gehts so, ob Firebird das unterstützt, weiß ich nicht.
  Mit Zitat antworten Zitat