如果在同一个月内存储了三个以上具有相同贸易名的记录,我应该从我的记录中提取。
我有一个记录的例子
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;发布于 2017-05-10 06:46:11
您的查询几乎是正确的。您需要将贸易名包含到PARTITION BY子句中:
SELECT Tradename, PrescDT
FROM (
SELECT p.*, COUNT(*) OVER (PARTITION BY Tradename, TRUNC(PrescDT, 'MM')) AS c
FROM PRESCRIPTION p
) p
WHERE c > 3
ORDER BY prescDT ASC;https://stackoverflow.com/questions/43885116
复制相似问题