Выборка наименьших ближайших дат из разных таблиц в одну
Нужно написать выборку данных по тарифам и нормам потребления на заданную дату, то есть доставать данные записанные в ближайшее меньшее от заданного значения время.
Написал процедуру выборки:
CREATE PROCEDURE GetServices
@Receiver varchar(15), @Date datetime
AS
BEGIN
SELECT
Receiver.Number AS ЛС,
Services.Name AS Услуга,
ServiceSubtypes.Name AS Подтип_услуги,
Specifications.Specific AS Норматив,
Tariff.Cost AS Тариф
FROM Receiver
JOIN Access ON Access.OWNER = Receiver.ID
JOIN Services ON Access.Code_Service = Services.Code AND Access.Rend = 1
JOIN ServiceSubtypes ON ServiceSubtypes.Code_Service = Services.Code AND Access.Code_Subtyped = ServiceSubtypes.ID AND Access.Rend = 1
JOIN Tariff ON Tariff.ID_Subtype = ServiceSubtypes.ID
JOIN Specifications ON Specifications.ID_Subtype = ServiceSubtypes.ID
WHERE Receiver.Number = @Receiver AND Tariff.Date = (SELECT TOP 1 Date FROM Tariff WHERE date <= @Date ORDER BY Date DESC) AND Specifications.Date = (SELECT TOP 1 Date FROM Specifications WHERE Date <= @Date ORDER BY Date DESC)
END
И по-мимо того, что Тариф и Норматив ищут ближайшее наименьшее, они ещё и ищут ОБЩЕЕ. Т.е. если не находят ОДИНАКОВЫХ дат, в таблицу ничего не выводится.