Nazwy kolumnom nadawane są na samym końcu.
Można twój problem rozwiązać na parę sposobów:
SELECT * FROM (SELECT
id_indeksu,
indeks,
nazwa_indeksu,
case when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))> 0 then 1
when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))= 0 AND
tmp.ilo_na_dost(28,id_indeksu) > 0 then 2 else tmp.ilo_na_dost(28,id_indeksu) end AS sss
FROM g.gm_indeksy WHERE rodzaj_materialu3 IN (4,5) AND pole3 = 0) x WHERE sss>0
SELECT
id_indeksu,
indeks,
nazwa_indeksu,
case when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))> 0 then 1
when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))= 0 AND
tmp.ilo_na_dost(28,id_indeksu) > 0 then 2 else tmp.ilo_na_dost(28,id_indeksu) end AS sss
FROM g.gm_indeksy WHERE rodzaj_materialu3 IN (4,5) AND pole3 = 0 AND case when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))> 0 then 1
when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))= 0 AND
tmp.ilo_na_dost(28,id_indeksu) > 0 then 2 else tmp.ilo_na_dost(28,id_indeksu) end>0
z zastosowaniem WITH (nie chce mi się pisać)