Dưới đây là bảng của tôi với dữ liệu:khoảng trống Finding trong ngày
CREATE TABLE customer_wer (
id_customer NUMBER,
name VARCHAR2(10),
surname VARCHAR2(20),
date_from DATE,
date_to DATE);
--KAROLINA BIELAWSKA - GAP MAR APR 2000 and JUN JUL 2001
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-JAN-00', '28-MAR-00');
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-APR-00', '30-JUN-00');
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-JUL-00', '30-SEP-00');
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-OCT-00', '31-DEC-00');
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-JAN-01', '31-MAR-01');
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-APR-01', '15-JUN-01');
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-JUL-01', '30-SEP-01');
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-OCT-01', '31-DEC-01');
--LUKASZ JAGIELLO - GAP JUN JUL 2000
INSERT INTO customer_wer VALUES (3, 'Lukasz', 'Jagiello', '01-JAN-00', '31-MAR-00');
INSERT INTO customer_wer VALUES (3, 'Lukasz', 'Jagiello', '01-APR-00', '15-JUN-00');
INSERT INTO customer_wer VALUES (3, 'Lukasz', 'Jagiello', '01-JUL-00', '30-SEP-00');
INSERT INTO customer_wer VALUES (3, 'Lukasz', 'Jagiello', '01-OCT-00', '31-DEC-00');
INSERT INTO customer_wer VALUES (3, 'Lukasz', 'Jagiello', '01-JAN-01', '31-MAR-01');
INSERT INTO customer_wer VALUES (3, 'Lukasz', 'Jagiello', '01-APR-01', '30-JUN-01');
INSERT INTO customer_wer VALUES (3, 'Lukasz', 'Jagiello', '01-JUL-01', '30-SEP-01');
INSERT INTO customer_wer VALUES (3, 'Lukasz', 'Jagiello', '01-OCT-01', '31-DEC-01');
Tôi đã tìm thấy khoảng trống với bên dưới chọn:
SELECT date_from, date_to, id_customer, next_date
FROM
(SELECT k.*,
LEAD(date_from, 1) OVER (partition by id_customer order by date_from) AS next_date
FROM customer_wer k
)
WHERE date_to + 1 <> next_date AND date_to < '31-DEC-01' AND date_to < next_date;
Tôi muốn biết nếu nó có thể có kết quả tương tự với nhân đôi bảng. Tôi không thể tìm ra giải pháp đúng. Lựa chọn của tôi bên dưới:
SELECT COUNT(k.id_customer)
FROM customer_wer k
JOIN customer_wer w
ON k.id_customer = w.id_customer
WHERE (w.date_from < k.date_from AND w.date_to + 1 < k.date_from);
Nên có một giới hạn nữa.
Tôi đã bỏ phiếu tán vì bạn đã cung cấp một trường hợp thử nghiệm. Tốt đẹp. –