首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql oracle:当一个月内存储的记录超过N条时,列出记录

sql oracle:当一个月内存储的记录超过N条时,列出记录
EN

Stack Overflow用户
提问于 2017-05-10 11:38:42
回答 1查看 26关注 0票数 1

编辑:我意识到我之前发布的问题是寻找一些不同的东西,而不是在同一个月内至少有N条记录,我需要在同一个月内有N条记录,并将相同的值保存在其中。

如果在一个月内存储了三个以上具有相同商标名的记录,我应该从我的记录中提取。

下面是我的记录的一个例子

代码语言:javascript
复制
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

所以它应该只返回以下内容,其中我只需要商标名和日期

代码语言:javascript
复制
Tradename           PrescDT
------------------------------
Panadol             sysdate-1
Panadol             sysdate-14
Panadol             sysdate-3
Panadol             sysdate-5

我尝试过使用它,但没有返回任何信息

代码语言:javascript
复制
SELECT pres.Tradename, pres.PrescDT
FROM PRESCRIPTION pres
    GROUP BY pres.Tradename, pres.PrescDT
    HAVING COUNT( TRUNC(pres.PrescDT, 'MM')) > 3;
EN

回答 1

Stack Overflow用户

发布于 2017-05-10 12:06:34

您可以使用窗口函数count来统计每个月的行数,并根据该计数进行筛选,以获得所需的结果:

代码语言:javascript
复制
select tradename, prescDT
from (
    select p.*,
        count(*) over (partition by trunc(prescDT, 'MM')) as cnt
    from prescription p
    ) p
where cnt >= 3;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43883214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档