Autor Zpráva
jataky
Profil
Zdravím, jak by šlo jedním dotazem udělat rozdíl těchto dvou dotazů :

SELECT sum(kusy) FROM zmeny WHERE nakup_vymena='N'
-
SELECT sum(kusy) FROM zmeny WHERE nakup_vymena='V'

děkuji
aDAm
Profil
a je nutné to dělat jedním dotazem?
juriad
Profil
http://sqlfiddle.com/#!2/7ee46e/4
Pokud je nakup_vymena 'N', tak ho sečti kladně a pokud je to 'V', tak ho sečti záporně.
Operátor porovnání totiž vrací 1 při rovnosti a 0 při nerovnosti; takže pro záznam typu 'N' to bude + 1 * kusy - 0 * kusy


Případně zajímavá varianta je také:
SELECT nakup_vymena, SUM(kusy) suma FROM zmeny GROUP BY nakup_vymena
Tento dotaz vrátí součty za všechny typy nakup_vymena; pokud jsou pouze 'N' a 'V', tak vrátí dva řádky.
jataky
Profil
juriad:

První varianta je to co jsem potřeboval.
Druhou varintu jsem měl, ale potřeboval jsem vrátit jeden řádek.

Díky
Kajman
Profil
Je možné i něco takového
SELECT
(SELECT sum(kusy) FROM zmeny WHERE nakup_vymena='N')
-
(SELECT sum(kusy) FROM zmeny WHERE nakup_vymena='V') rozdil
FROM DUAL

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0