我有两个表加入,我希望在过去60天内查询超过3/3 pmt_cde的记录
TABLE1:
ID_CHAIN
PMT_CDE
PMT_DATE
PMT_AMOUNT
和
TABLE2:
ID_CHAIN
我正在寻找过去60天内有超过3个PMT_CDE = 536的ID_CHAIN。
P.S。这是一个新问题,我今天早些时候有过类似案例,但相信我这是全新的。感谢。
答案 0 :(得分:1)
由于您尚未指定哪个RDBMS - 这是Oracle答案(但将日期算法转换为任何其他RDBMS应该相对简单):
Oracle 11g R2架构设置:
CREATE TABLE TABLE1 (
ID_CHAIN NUMBER,
PMT_CDE NUMBER,
PMT_DATE DATE,
PMT_AMOUNT NUMBER
);
INSERT INTO TABLE1 VALUES ( 1, 536, DATE '2015-07-23', 0 );
INSERT INTO TABLE1 VALUES ( 1, 536, DATE '2015-07-22', 0 );
INSERT INTO TABLE1 VALUES ( 1, 536, DATE '2015-07-21', 0 );
INSERT INTO TABLE1 VALUES ( 1, 536, DATE '2015-07-20', 0 );
INSERT INTO TABLE1 VALUES ( 2, 536, DATE '2015-07-22', 0 );
INSERT INTO TABLE1 VALUES ( 2, 536, DATE '2015-07-21', 0 );
INSERT INTO TABLE1 VALUES ( 2, 536, DATE '2015-05-01', 0 );
INSERT INTO TABLE1 VALUES ( 3, 536, DATE '2015-07-22', 0 );
INSERT INTO TABLE1 VALUES ( 3, 536, DATE '2015-07-21', 0 );
INSERT INTO TABLE1 VALUES ( 4, 536, DATE '2015-02-03', 0 );
INSERT INTO TABLE1 VALUES ( 4, 536, DATE '2015-02-02', 0 );
INSERT INTO TABLE1 VALUES ( 4, 536, DATE '2015-02-01', 0 );
查询1 :
SELECT ID_CHAIN
FROM TABLE1
WHERE PMT_DATE >= CURRENT_DATE - INTERVAL '60' DAY
AND PMT_CDE = 536
GROUP BY ID_CHAIN
HAVING COUNT(ID_CHAIN) > 3
<强> Results 强>:
| ID_CHAIN |
|----------|
| 1 |