编辑:我意识到我之前发布的问题是寻找不同的东西,而不是在同一个月内至少有N条记录,我需要在同一个月内保存相同值的N条记录。
我想从我的记录中获取,如果同一个月内存储的商品名相同的记录超过三个。
我的记录示例
TradeID Tradename PrescDT
------------------------------------------
1109 Panadol sysdate-1
1123 Opioids sysdate-3
1125 Doxycycline sysdate-3
1138 Panadol sysdate-14
1139 Panadol sysdate-3
1141 Panadol sysdate-5
1142 Codeine sysdate-5
1162 Opioids sysdate-14
1167 Codeine sysdate-14
1168 Prednisone sysdate-14
1170 Codeine sysdate-21
1172 Codeine sysdate-22
所以它应该只返回我,我只需要商品名和日期
Tradename PrescDT
------------------------------
Panadol sysdate-1
Panadol sysdate-14
Panadol sysdate-3
Panadol sysdate-5
我尝试过使用此功能,但是没有任何回复
SELECT pres.Tradename, pres.PrescDT
FROM PRESCRIPTION pres
GROUP BY pres.Tradename, pres.PrescDT
HAVING COUNT( TRUNC(pres.PrescDT, 'MM')) > 3;
答案 0 :(得分:0)
您可以使用窗口函数count
来计算每个月的行数,并根据该计数进行过滤以获得所需的结果:
select tradename, prescDT
from (
select p.*,
count(*) over (partition by trunc(prescDT, 'MM')) as cnt
from prescription p
) p
where cnt >= 3;