[OT] SQL vypocty se sloupci

Slavomir Skopalik skopalik@elektlabs.cz
Pondělí Listopad 30 11:29:15 CET 2009


Nepisete o jaky SQL se jedna.
Ve Vasem pripade se bude jednat o spravnou volbu grupoveni, s tim,
ze vyraz se SUM musite pokazde zopakovat.

Treba takto:
tabulka se sloupci a a b

SELECT SUM(a), SUM(a)-SUM(b) FROM tabulka

nebo

SELECT typ_vyrobku, SUM(a), SUM(a)-SUM(b) FROM tabulka
GROUP BY typ_vyrobku.

Pokud se jedna o slozitejsi vypocty, je lepsi pouzit uloznou proceduru.
V pripade, ze pouzivate SQL firebird, muzete pouzit tzv. SELECT EXPRESION

SELECT (SELECT SUM(a) FROM TAB1 WHERE b=x), x FROM tab2

nebo execute statament (ukazka z delphi klienta):

IBQP.SQL.Text:=Format('EXECUTE BLOCK AS '+CRLF+
          'DECLARE id INTEGER=NULL;'+CRLF+
          'DECLARE idm INTEGER =%d;'+CRLF+
          'DECLARE LoLo DOUBLE PRECISION =%s;'+CRLF+
          'DECLARE Lo DOUBLE PRECISION =%s;'+CRLF+
          'DECLARE Hi DOUBLE PRECISION =%s;'+CRLF+
          'DECLARE HiHi DOUBLE PRECISION =%s;'+CRLF+
          'BEGIN '+CRLF+
            'SELECT id FROM DevMeasurandLimits WHERE idDevice=1 AND
idDevMeasurand=:idm INTO :id;'+CRLF+
            'IF(id IS NULL) THEN '+
              'INSERT INTO DevMeasurandLimits(idDevice,idDevMeasurand, LoLo,
Lo, Hi, HiHi) VALUES(1,:idm, :LoLo, :Lo, :Hi, :HiHi);'+
             'ELSE '+
               'UPDATE DevMeasurandLimits SET LoLo=:LoLo, Lo=:Lo, Hi=:Hi,
HiHi=:HiHi WHERE id=:id;'+
          'END',
 
[p.id,FloatToSQLStr(p.Actual.MinMin),FloatToSQLStr(p.Actual.Min),FloatToSQLS
tr(p.Actual.Max),FloatToSQLStr(p.Actual.MaxMax)]);
        IBQP.ExecQuery;

Slavek

Ing. Slavomir Skopalik
Jednatel spolecnosti
Elekt Labs s.r.o.
Chaloupky 158
783 72 Velky Tynec
Czech Republic
--------------------------------------------
Mobil: +420 724 207 851
icq:199 118 333
e-mail:skopalik@elektlabs.cz
http://www.elektlabs.cz




> -----Original Message-----
> Da se nejak provadet kalkulace se sloupci v SQL dotazu, kdyz nektery 
> z nich je vytvoren pomoci sum()? Neco jako tento (nefunkcni) pokus:
> 
> SELECT op.products_name, sum(op.products_quantity) as sale, 
> p.products_quantity as stock, sale-stock as predict FROM ....
> 
> Prvni sloupec je nazev vyrobku, druhy je prodej za urcite obdobi, 
> treti je aktualni skladova zasoba a ve ctvrtem bych chtel mit 
> predpoved skladu za totez obdobi (pokud prodej bude 
> pokracovat stejnym tempem).
> 
> J. Hanzal
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz 
> Hw-list@list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list
> 



More information about the Hw-list mailing list