Хорошо, поэтому я пытаюсь получить заданный вывод в SQL, чтобы перечислить пользовательское значение квартала вместе с учетными записями с учетом даты активации и завершения.Моя компания использует нестандартные расчеты кварталов, поэтому я создал небольшую схему, сопоставляющую распознавание кварталов со стандартными месяцами.Запрос работает отлично, пока я не попытаюсь включить в него также четверть завершения.
Я собираюсь использовать это как представление и сгенерировать отчет по его результатам.Вот запрос на данный момент.Я признаю, что я не очень хороший SQL, поэтому я стараюсь использовать лучшие практики и легко читаемый код.Пожалуйста, не стесняйтесь критиковать что-либо вообще или, возможно, предложить более эффективный способ достижения моей цели.
SELECT ZoneA.ZoneDescription
,TrackerA.Zone
,MasterListA.Name
,SubscriptionsA.ActivationDate
,SubscriptionsA.TerminationDate
,ParentA.ProductParentType
,MONTH(SubscriptionsA.ActivationDate) AS ActivationMonth
,MONTH(SubscriptionsA.TerminationDate) AS TerminationMonth
,QuartersA.CompanyFiscalQuarter AS ActivationQuarter
,QuartersB.CompanyFiscalQuarter AS TerminationQuarter
FROM BalanceTracker.Zone AS ZoneA INNER JOIN
BalanceTracker.TrackerAccounts AS TrackerA ON ZoneA.ZoneID = TrackerA.Zone INNER JOIN
BalanceTracker.SweepAccounts AS SweepA ON TrackerA.TrackedAccount = SweepA.SweepAccount INNER JOIN
Fed.MasterAccountList AS MasterListA ON SweepA.MasterAccountListID = MasterListA.MasterAccountListID INNER JOIN
Products.Subscriptions AS SubscriptionsA ON MasterListA.MasterAccountListID = SubscriptionsA.SnlId INNER JOIN
Products.ProductParent AS ParentA ON SubscriptionsA.ProductCode = ParentA.ProductCode INNER JOIN
Calendar.Quarters AS QuartersA ON SubscriptionsA.ActivationMonth = QuartersA.MonthNumber,
Products.Subscriptions AS SubscriptionsB INNER JOIN
Calendar.Quarters AS QuartersB ON SubscriptionsB.TerminationMonth = QuartersB.CompanyFiscalQuarter
ORDER BY TrackerA.Zone, SubscriptionsA.ActivationDate
Таблицы следующие:
-Zone: ZoneID (PK) -TrackerAccounts:Отслеживаемая учетная запись (PK), Зона (FK) -SweepAccounts: SweepAccount (PK, FK на TrackerAccounts), MasterAccountListId (FK на MasterAccountList) -MasterAccountList: MasterAccountListId (PK) -Подписки: SubscriptionId (PK), Flcccc (SnlI)ProductCode (FK для ProductParent) -ProductParent: ProductCode (PK)
-Квартиры: MonthNumber (PK)