ben de mysql aliasların order by ında bi ara uğraşmıştım ve şuna benzer
çözmüştüm.

SELECT
 DISTINCT EXTRACT(YEAR FROM tarih) AS cc,
 COALESCE(SELECT SUM(miktar) AS miktar FROM hareketler WHERE tarih
BETWEEN CONCAT(EXTRACT(YEAR FROM tarih),'-01-01') AND CONCAT(EXTRACT(YEAR
FROM tarih),'-12-31') AND miktar > 0), 0)
AS toplam_giris,
 COALESCE(SELECT SUM(miktar) AS miktar FROM hareketler WHERE tarih
BETWEEN CONCAT(EXTRACT(YEAR FROM tarih),'-01-01') AND CONCAT(EXTRACT(YEAR
FROM tarih),'-12-31') AND miktar < 0), 0)
AS toplam_cikis
FROM hareketler WHERE urun_id = 3791 ORDER BY EXTRACT(YEAR FROM tarih);
*_________________
*
Hasan Basri Ateş
*4NET Bilişim Teknolojileri*
*+90 (216**)** 414 1 544*
*i...@4net.com.tr
www.4net.com.tr*



2012/6/8 Omer Barlas <o...@barlas.com.tr>

> Yeni bir postgresql sorusu ile tekrar karşınızdayım.
>
> Bir tane query içerisinde iki tane subquery'im var, ama bu subquery'ler
> bir alias'a işaret ediyor. Aliası MySQL üzerinde kullandığımda hiç
> sıkıntı yok, ancak PostgreSQL üzerinde aynı sorguyu çalıştırdığımda bana
> "böyle bir kolon yok" diye bağırıyor.
>
> Şöyle ki;
>
> SELECT
>  DISTINCT EXTRACT(YEAR FROM tarih) AS cc,
>  COALESCE(SELECT SUM(miktar) AS miktar FROM hareketler WHERE tarih
> BETWEEN CONCAT(cc,'-01-01') AND CONCAT(cc,'-12-31') AND miktar > 0), 0)
> AS toplam_giris,
>  COALESCE(SELECT SUM(miktar) AS miktar FROM hareketler WHERE tarih
> BETWEEN CONCAT(cc,'-01-01') AND CONCAT(cc,'-12-31') AND miktar < 0), 0)
> AS toplam_cikis
> FROM hareketler WHERE urun_id = 3791 ORDER BY cc;
>
> PostgreSQL'in bana verdiği cevap şöyle;
>
> ERROR:  column "cc" does not exist
>
> Evet, bu sorguyu önce yılları çekip, daha sonra tek tek yıllara göre
> çalıştırmak mümkün, doğrudur, ancak tek sorguda çözebiliyorsam neden
> olmasın diye düşünüyorum, acaba recursive bir sorgu mu kullanmak
> gerekirdi? Tabi recursive ile ilk kez karşılaştığım için dökümantasyona
> maalesef ufo görmüş masum köylü gibi bakıyorum, içinden çıkamadım.
>
> PostgreSQL'de aliasları subquery'ler içerisinde kullanmanın bir yolu
> yordamı var mı, yoksa sorguyu atıp, baştan mı bir şey yazmak lazım?
>
> --
> Omer Barlas
> o...@barlas.com.tr
> _______________________________________________
> Linux-sunucu E-Posta Listesi
> Linux-sunucu@liste.linux.org.tr
>
> Liste kurallarını http://liste.linux.org.tr/kurallar.php  bağlantısından
> okuyabilirsiniz;
>
> Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen
> e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1
> dakika içinde üyeliğinizi sonlandırabilirsiniz.
> https://liste.linux.org.tr/mailman/listinfo/linux-sunucu
>
_______________________________________________
Linux-sunucu E-Posta Listesi
Linux-sunucu@liste.linux.org.tr

Liste kurallarını http://liste.linux.org.tr/kurallar.php  bağlantısından 
okuyabilirsiniz;

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
https://liste.linux.org.tr/mailman/listinfo/linux-sunucu

Cevap