我想从我的记录中获取,如果同一个月内存储的商品名相同的记录超过三个。
我的记录示例
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 Tradename, PrescDT
FROM (
SELECT p.*, COUNT(*) OVER (PARTITION BY TRUNC(PrescDT, 'MM')) AS c
FROM PRESCRIPTION p
) p
WHERE c > 3
ORDER BY prescDT ASC;
答案 0 :(得分:3)
您的查询几乎正确。您需要将商标名包含在private
子句中:
PARTITION BY