Antagonia,
se ho capito bene, vuoi ordinare i record per posizione se il loro valore e` != 0, e poi il resto dei record con posizione = 0.
Se in output ottieni solo i record con posizione != 0, e` per via del filtro (bStatus=1 OR PosNews>0). cioe` i record con posizione = 0 hanno bStatus != 1.
Per l'ordinamento, una soluzione puo` essere quella di generare un nuovo attributo per discriminare l'ordinamento, e.g.:
codice:
WITH tmp AS ( SELECT * FROM TB_NEWS
WHERE ('2017-11-10 08:00:00' BETWEEN dDataIns AND dDataScad) /* AND (bStatus=1 OR PosNews>0) */
AND Intranet=1 )
SELECT *, ( posNews == 0 ) AS discriminant
FROM tmp
ORDER BY bStatus DESC, discriminant, PosNews ASC, dDataNews DESC LIMIT 0,15
Vedi http://sqlfiddle.com/#!9/b608d2/5

Rispondi quotando