编辑:我意识到我之前发布的问题是寻找一些不同的东西,而不是在同一个月内至少有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;发布于 2017-05-10 12:06:34
您可以使用窗口函数count来统计每个月的行数,并根据该计数进行筛选,以获得所需的结果:
select tradename, prescDT
from (
select p.*,
count(*) over (partition by trunc(prescDT, 'MM')) as cnt
from prescription p
) p
where cnt >= 3;https://stackoverflow.com/questions/43883214
复制相似问题