我想为一个特定的日期和时间获取重复的行,按这两个行分组 bname
以及 txn_date
和 txn_date
最多小时分钟(秒不需要匹配)
例如,我获取下面的行 txn_date = 2020/07/28
, txn_type = OPD
, payment_mode = CREDIT
以及 inv_num
开始于 AGL
其中,我只需要ID为1-4的行
ID | txn_date | bname
-----------------------------------------------
1 | 2020/07/28 10:21:58 PM | MRS R A W B VERNON
2 | 2020/07/28 10:21:56 PM | MRS R A W B VERNON
3 | 2020/07/28 09:51:58 AM | MRS TRIDENTZ
4 | 2020/07/28 09:51:58 AM | MRS TRIDENTZ
5 | 2020/07/28 09:49:51 AM | MRS TRIDENTZ
6 | 2020/07/28 08:33:14 AM | MRS TRIDENTZ
7 | 2020/07/28 08:25:06 AM | MRS S F D SHERILA
8 | 2020/07/28 08:11:35 AM | MRS S F D SHERILA
我使用下面的查询。
select to_char(l.txn_date,'YYYY/MM/DD HH12:MI:SS AM') "DATE",l.bname
from linv l where (bname) IN (select bname from linv
where txn_date like '28-JUL-20%'
group by bname, txn_date
having count(*) > 1) and l.txn_type = 'OPD' and payment_mode = 'CREDIT'
and inv_num like 'AGL%'
and txn_date like '28-JUL-20%'
order by l.txn_date desc, l.bname
但这并没有提供所需的输出,因为某些必需的行没有获取。
我试着把分组改成 to_char(txn_date, 'HH24')
但这并不奏效。
我认为 group_by txn_date
有问题,但无法修复。有人能帮忙吗?
谢谢!
2条答案
按热度按时间8oomwypt1#
如果您试图根据datetime分组到分钟,您可以使用trunc函数除去秒和毫秒。
https://docs.oracle.com/cd/b28359_01/server.111/b28286/functions209.htm#sqlrf06151
在你的小组里用这个代替
eqfvzcg82#
做
exists
你想要什么?您还可以添加其他过滤器。你的问题表明:
或使用窗口功能: