Мне нужно рассчитать количество месяцев, прошедших между родами матери.Если бы у матери был только один ребенок, это число должно быть 0. Для близнецов это также будет 0 (та же дата рождения).Я думаю, что это может сработать, но в основном это неэффективно.Каков хороший способ сделать это?
CREATE TABLE Births (
MotherID int,
ChildID int,
ChildBDate date,
BirthOrder int
);
INSERT INTO Births (MotherID, ChildID, ChildBDate, BirthOrder)
VALUES ('1234567', '7654321', '1977-01-02', '1'),
('1234567', '6548721', '1981-05-04', '2'),
('1234567', '4548712', '1983-10-19', '3'),
('5587214', '4477441', '1986-07-21', '1'),
('4452012', '6782114', '1991-08-22', '1'),
('4452012', '8754557', '1991-08-22', '2');
SELECT MotherID,
ChildID,
ChildBDate,
BirthOrder,
BirthInterval = DATEDIFF(MONTH, a.childbdate, B.childbdate)
FROM Births a
JOIN Births B
ON a.motherID = B.motherID
WHERE a.BirthOrder= 1
AND b.BirthOrder= 2
OR a.BirthOrder= 2
AND b.BirthOrder= 3
OR a.BirthOrder= 3
AND b.BirthOrder= 4
OR a.BirthOrder= 4
AND b.BirthOrder= 5
OR a.BirthOrder= 1
AND b.BirthOrder= 1