Informix
如何根據重複的列顯示不包括最大值的值
我面臨一個具有挑戰性的問題,我需要根據不包括最大值的重複列列印特定列中的所有欄位
我的查詢計劃:
select event_no, bs_id from bs_bank_mast where event_no in (select event_no from bs_bank_mast group by event_no having count(*) > 1) order by event_no ASC
我的輸出:
event_no bs_id 1692163 40672 1692163 41974 1692163 40672 1692163 41974 1723264 67460 1723264 67499 1723264 68357 1723265 67929 1723265 67383 1723266 67735 1723266 67423 1723266 67969 1723266 68164 1723266 67501 event_no bs_id 1692163 40672 1723264 67460 1723264 67499 1723265 67929 1723266 67735 1723266 67423 1723266 67969 1723266 68164
所以基本上除了 bs_id 的最後一個最大值之外的所有內容都被列印出來
我試過的查詢:
select event_no, bs_id from bs_bank_mast where event_no in (select event_no from bs_bank_mast group by event_no having count(*) > 1) and event_no < max(bs_id)
我得到的錯誤是:
在這種情況下對聚合的使用不當
請您提供我需要的幫助。
您不能使用聚合的 WHERE 子句。相反,您可以將您的表與您的分組結果集連接起來並丟棄最大值。
select t1.event_no, t1.bs_id from bs_bank_mast t1 join (select event_no, max(bs_id) max_bs_id from bs_bank_mast group by event_no having count(*) > 1) t2 on t2.event_no = t1.event_no and t1.bs_id <> t2.max_bs_id;
event_no | bs_id -------: | ----: 1692163 | 40672 1692163 | 40672 1723264 | 67460 1723264 | 67499 1723265 | 67383 1723266 | 67735 1723266 | 67423 1723266 | 67969 1723266 | 67501
dbfiddle在這裡