У меня проблемы с написанием этого SQL-запроса - PullRequest
0 голосов
/ 17 апреля 2019

Я новичок здесь, и поэтому я прошу прощения за то, что задал (как мне кажется,) сложный вопрос сразу, но я застрял и надеюсь, что вы, ребята, можете мне помочь. Я приложил к этому изображение, которое показывает мой дизайн таблиц и как они связаны друг с другом (скриншот MS Access). Это, вероятно, поможет увидеть при чтении моего вопроса:

Я пытаюсь написать запрос, который, учитывая «Конец финансового года» из таблицы «Участие клиента», возвращает поля «Имя инвестиции», которые не существуют в текущем году (конец финансового года) «Клиент K1 / Налоговый отчет ", которые DID / DO существовали в конце финансового года, предшествующего.

По сути, мне нужен список названий инвестиций, которые существовали в списке / отчете за прошлый год, у которых нет отчета / списка за этот год.

Прошу прощения за мои элементарные синтаксические навыки или за любые ошибки, которые я, возможно, совершил.

Заранее благодарю за любую помощь, которую вы можете оказать!

Table Design Image

Мой код SQL сейчас:

PARAMETERS [CURRENT FISCAL YEAR] DateTime, [COMPARATIVE FISCAL YEAR] DateTime;
SELECT Investments.[Investment Name], [Client Engagement].[Fiscal Year End]
FROM Investments INNER JOIN ([Investment Year] INNER JOIN ([Client Engagement] INNER JOIN [Client K1/Tax Report] ON [Client Engagement].EngagementID = [Client K1/Tax Report].[Client Engagement ID]) ON [Investment Year].[Investment FS ID] = [Client K1/Tax Report].[Investment FS ID]) ON Investments.[Investment Name] = [Investment Year].[Investment Name]
WHERE ((([Client Engagement].[Fiscal Year End])=[CURRENT FISCAL YEAR])) NOT IN
(
SELECT Investments.[Investment Name], [Client Engagement].[Fiscal Year End]
FROM Investments INNER JOIN ([Investment Year] INNER JOIN ([Client Engagement] INNER JOIN [Client K1/Tax Report] ON [Client Engagement].EngagementID = [Client K1/Tax Report].[Client Engagement ID]) ON [Investment Year].[Investment FS ID] = [Client K1/Tax Report].[Investment FS ID]) ON Investments.[Investment Name] = [Investment Year].[Investment Name]
WHERE ((([Client Engagement].[Fiscal Year End])=[COMPARATIVE FISCAL YEAR]))
)

Отформатирован для удобства чтения:

PARAMETERS [CURRENT FISCAL YEAR] DATETIME
    ,[COMPARATIVE FISCAL YEAR] DATETIME;

SELECT Investments.[Investment Name]
    ,[Client Engagement].[Fiscal Year End]
FROM Investments
INNER JOIN (
    [Investment Year] INNER JOIN (
        [Client Engagement] INNER JOIN [Client K1/Tax Report] ON [Client Engagement].EngagementID = [Client K1/Tax Report].[Client Engagement ID]
        ) ON [Investment Year].[Investment FS ID] = [Client K1/Tax Report].[Investment FS ID]
    ) ON Investments.[Investment Name] = [Investment Year].[Investment Name]
WHERE ((([Client Engagement].[Fiscal Year End]) = [CURRENT FISCAL YEAR])) NOT IN (
        SELECT Investments.[Investment Name]
            ,[Client Engagement].[Fiscal Year End]
        FROM Investments
        INNER JOIN (
            [Investment Year] INNER JOIN (
                [Client Engagement] INNER JOIN [Client K1/Tax Report] ON [Client Engagement].EngagementID = [Client K1/Tax Report].[Client Engagement ID]
                ) ON [Investment Year].[Investment FS ID] = [Client K1/Tax Report].[Investment FS ID]
            ) ON Investments.[Investment Name] = [Investment Year].[Investment Name]
        WHERE ((([Client Engagement].[Fiscal Year End]) = [COMPARATIVE FISCAL YEAR]))
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...