-1
我有一個選擇與子選擇內連接等等。但是從這個結果來看,我希望它能夠爲我帶來OidBilling專欄中最大的記錄。下面是選擇的例子和它帶來的結果的例子,以便更容易理解我想要的結果。選擇列最大
select address_block_uc
,address_complement_uc
,u.name_uc
,m.description_meter
,m.serial_number_meter
,lst.date_read date_read
,value_read
,tm.name_type_meter
,lst.concentrator
,lst.port
,m.oid_uc
,m.oid_meter
,m.type_constant
,f.first_measur
,lst.id_system
,ib.read0
,ib.oid_individual_billing
,get_correction_factor(lst.id_system, m.oid_meter, m.oid_uc, lst.date_read) corr_factor
,get_correction_pulse(lst.id_system, lst.concentrator, lst.port, lst.date_read) corr_pulse
,nvl(f.first_measur,0) + (i.value_read * m.type_constant) leitura
from (select id_system
,concentrator
,port
,date_read
,m.oid_uc
,m.oid_meter
from rs_individual_read i
,rs_uc u, rs_meter m
,rs_counters c
where m.oid_meter = c.oid_meter
and c.concentrator_counters = i.concentrator
and c.port_counters = i.port
and date_read between to_date ('01/03/2017 23:00:00','dd/MM/yyyy HH24:MI:SS') and to_date ('25/03/2017 23:00:00','dd/MM/yyyy HH24:MI:SS')
and date_read between c.dt_init and c.dt_end
and date_read between m.dt_init and m.dt_end
and u.oid_system=i.id_system
and m.oid_uc=u.oid_uc
and i.id_system=531
and m.oid_meter=69451
group by id_system
,concentrator
,i.port
,date_read
,m.oid_uc
,m.oid_meter) lst
inner join rs_individual_read i
on (i.id_system = lst.id_system
and i.date_read = lst.date_read
and i.concentrator = lst.concentrator
and i.port = lst.port)
inner join rs_counters c
on (c.concentrator_counters = lst.concentrator
and c.port_counters = lst.port
and lst.date_read between c.dt_init and c.dt_end)
inner join rs_meter m
on (m.oid_meter = c.oid_meter
and m.oid_meter = lst.oid_meter
and lst.date_read between m.dt_init and m.dt_end)
inner join rs_uc u
on (u.oid_system = lst.id_system
and u.oid_uc = lst.oid_uc
and u.oid_uc = m.oid_uc)
inner join rs_type_meter tm
on (m.oid_type_meter = tm.oid_type_meter)
inner join rs_individual_billing ib
on (ib.serial_number = m.serial_number_meter)
left outer join rs_first_measurs f
on (f.oid_meter = m.oid_meter)
order by date_read desc
,address_block_uc
,address_complement_uc
,name_uc
結果:
DATE_READ OID_INDIVIDUAL_BILLING LEITURA
20/03/2017 23:00 8500 800
20/03/2017 23:00 8791 800
20/03/2017 23:00 8628 800
19/03/2017 23:00 8500 450,971
19/03/2017 23:00 8628 450,971
19/03/2017 23:00 8791 450,971
19/03/2017 23:00 8791 450,653
19/03/2017 23:00 8500 450,653
19/03/2017 23:00 8628 450,653
19/03/2017 12:00 8628 450,653
19/03/2017 12:00 8791 450,653
這樣做的結果是帶來了在報告中一些重複的時間表,併爲它不重複,我想結果,使僅列的更大的數據例如,在日期19/03/2017 23:00hs,我們有3個寄存器的同一日期的oid_individual_billing,但是我希望它只顯示8791行,這是該記錄的oid_individual_illing列的最大ID ...任何人都可以幫我?
我總結了便於發佈的列。
對不起,我的英語來自谷歌翻譯
Tks!
嗨,你從上面提到的查詢結果中提到的3行。只保留第8791行的邏輯是什麼(如果我沒有弄錯的話,這是兩個)例如WHERE OID_INDIVIDUAL_OID = 8791 ??? –
您好,首先感謝您的迴應,並感謝您對嘗試提供幫助的興趣。 我會盡量總結想要8971線的邏輯,這一行這個ID 8971是這個日期插入的最後一個。我清楚了嗎? – brizola727
如果我有一種方法來插入一個最大列,通過放入選擇「我希望最大的oid_billing for date x」看起來很完美。但我不知道該怎麼做 – brizola727