Как ограничить запрос?

Zmiy
Дата: 31.05.2006 15:12:22
Есть запрос который выводит счета. Суть в том, что в запросе выводится 2 одинаковые строки которые различаются тока по параметру ID, внешний ключ. Так вот как мне сделать чтобы в случае если выводится 2 строки с одним ID счета, но с разными внешними ID, 1 из которых равен 0, чтобы не выводить тот, где 0?
alex-ls
Дата: 31.05.2006 15:14:39
where ID > 0 ?
Zmiy
Дата: 31.05.2006 15:15:37
не пойдет, потому как если существует ТОЛЬКО 1 запись с ID счета, то в ней может быть 0.
alex-ls
Дата: 31.05.2006 15:18:29
count (*) over (partition by условие) во внешний запрос обернуть и проверить на > 1 and ID >0
andrey_anonymous
Дата: 31.05.2006 15:21:33
1.
min(field_not_id) keep(dense_rank last order by fk_id) .......... group by id
2.
....(......row_number() cnt over(partition by id order by fk_id desc) X ..... where x=1) 
dmidek
Дата: 31.05.2006 15:21:37
Если ID >= 0 и строк только 2, то ИМХО проще всего
row_number() over (partition by id1 order by id2 desc) rn
и затем
where rn != 2 or id2 != 0
iV@n
Дата: 31.05.2006 15:22:18
можно так попробывать
select * from (
select id, fid, row_number() over (partition by id order by fid desc) rn from (
select 1 id, 0 fid from dual union all
select 1 id, 1 fid from dual union all
select 2 id, 0 fid from dual union all
select 3 id, 1 fid from dual))
where rn = 1
dmidek
Дата: 31.05.2006 15:33:04
iV@n
можно так попробывать

Этого мало. Обе записи могут быть ненулевыми
Zmiy
Дата: 31.05.2006 15:41:13
А почему не работает?
SELECT distinct a.RTA_ID, ANNARVE_ID, ARVE_ALUSTATUD, ARVE_L_PETATUD, ARVE_SUMMA_KOKKU, ASUTUSARVE_ID, DGN1_KOOD, DGN1_TYYP, 
DGN2_KOOD, DGN2_TYYP, DGN3_KOOD, DGN3_TYYP,DGN4_KOOD, DGN4_TYYP, ESITARST_ID, ESITARST_KOOD, ESITA_ERIALA_ID, 
ESITA_SY_ID, HINNAKIRI_ID, KAIBEMAKS, KASEIKINDLUSTATUD, KASTVL, KOOPIAARVE_ID, A.NULLARVE_NR, NULLARVE_SEERIA, 
PAKKI_LISAMISE_AEG, PATSIENDI_POOLT_MAKSTUD_SUMMA, A.PATSIENT_ID, PTS_EESNIMI, PTS_ELUK, PTS_HK, PTS_HKKAART_NR, 
PTS_HKKAART_TYPE, PTS_ISIKUKOOD, PTS_PERENIMI, PTS_SUGU, PTS_SYNNIAEG, A.RAVIASUTUS_NR, RTARVE_PEREARST_ID, 
RTA_ID, RTTYYP_KOOD, SEERIA, SISESTAJA_ID, SNUMBER, STATUS, SURMA_KELLAAEG, SURMA_KP, SUUNARST_ID, SUUNARST_KOOD, 
SUUNATUD, SUUNA_ERIALA_ID, SUUNA_SY_ID, TAGASTAMISE_KP, TAGASTAMISE_RP_KP, TASULINE_ARVE, TASUTUD_SUMMA, 
A.VALTIMATU_ABI, VOODIPROFIILI_KOOD, VPOHJ_KOOD, VISIIDITASU_ID, VPOHJ_TYYP, HKSAADETIS_ID, ASUKOHT, 
a.esita_tegelik_eriala, a.suuna_tegelik_eriala, PROBLEEMKOMM, pts_riik, vpohj_syndmuspaik, vpohj_tegevus, 
k.haigusjuht_id, row_number() over (partition by a.rta_id order by k.haigusjuht_id desc) as rn
 
from RTARVE A LEFT OUTER JOIN TOOTAJAD EA ON EA.TOOTAJA_ID = ESITARST_ID 
LEFT OUTER JOIN TOOTAJAD SA ON SA.TOOTAJA_ID = SUUNARST_ID 
left join kylastus k on k.arve_id = rta_id 
WHERE A.TASULINE_ARVE = 'E' AND UPPER(A.PTS_ISIKUKOOD) LIKE '45009300273%' AND A.PTS_ISIKUKOOD = '45009300273' 
AND A.RAVIASUTUS_NR = '10497496' and (rn != 2 or k.haigusjuht_id != 0) ORDER BY ARVE_ALUSTATUD DESC
Ругается на rn.
alex-ls
Дата: 31.05.2006 15:42:15
Zmiy
Ругается на rn.

во внешний запрос условие!