Как одна структура запрашивает объединение основных подробных записей за определенный период
Рассмотрим следующий сценарий (если он помогает думать о Northwind Orders / OrderDetails).
У меня есть две таблицы LandingHeaders и LandingDetails, которые записывают подробности о коммерческих поездках на рыбалку. Как правило, в течение недели рыболовное судно может совершать несколько поездок в море, и в результате получается несколько записей LandingHeader/LandingDetail.
В конце каждой недели компания, которая покупает результаты этих рыболовных поездок, должна определить стоимость каждой посадки, совершаемой каждым судном, а затем выплачивать владельцу этого судна любые причитающиеся деньги. Чтобы добавить веселья, есть несколько судов, принадлежащих одному и тому же лицу, поэтому компания, покупающая рыбу, предпочла бы, чтобы стоимость всех выловов всех судов, принадлежащих данному человеку, была объединена в единый платеж.
До сих пор информация, необходимая для выполнения этой задачи, распространялась не только на простую структуру таблицы основных данных, и поэтому для ее достижения требовалось несколько хранимых процедур (наряду с разумным использованием словарей в основном приложении, выполняющем работу). конечный результат. Внешние обстоятельства вне моего контроля вынудили некоторые серьезные изменения в базе данных, и я воспользовался возможностью, чтобы реструктурировать таблицу LandingHeader так, чтобы она содержала всю необходимую информацию, которая может потребоваться.
Из таблицы заголовка посадки мне нужно записать следующие поля;
- LandingHeaderId типа sql int
- VesselOwnerId типа sql int
- LandingDate (просто используется как часть запроса в реальности) типа sql datetime
Из таблицы LandingDetails мне нужно записать следующие поля;
- ProductId типа sql int
- Количество десятичных типов sql (10,2)
- UnitPrice типа sql денег
Я думал о создании запроса, который принимает в качестве параметров VesselOwnerID, SartDate и EndDate.
В качестве выходных данных мне нужно знать, какие LandingId связаны с владельцем, и общее количество для каждого отдельного ProductId (вместе с UnitPrice, которое будет одинаковым для каждого ProductId за выбранный период) распределено по различным посадочным деталям, связанным с LandingHeaders по данный период.
Я думал о строках вывода, которые могли бы выглядеть примерно так;
Может ли это быть сделано из стандартного отношения таблицы типа "мастер - деталь", или мне все равно придется прибегнуть к нескольким хранимым процедурам.
Цель термина lomnger состоит в том, чтобы иметь запрос, который можно использовать для создания xml, который можно адаптировать для использования с веб-API.
Большое спасибо за любые предложения, которые вы могли бы иметь