Как прокомментировали SO люди, мы не можем получить доступ к изображениям, которые описывают ваши ожидаемые результаты. Однако мы понимаем, что вы ищете JOIN
результаты обоих запросов, которые вы показываете.
Вот как это сделать: вы превращаете каждый запрос в подзапрос и JOIN
объединяете их в полях общих ключей; в вашем случае это должны быть Year
и Week
. Предложение ORDER BY
необходимо переместить во внешний запрос. В предложениях SELECT
, WHERE
и ORDER BY
вы можете свободно обращаться ко всем полям из подзапросов, используя определенные вами псевдонимы (здесь A
и B
).
Пример кода (вам придется адаптировать SELECT
, я не могу сказать, как вы хотите, чтобы он выглядел):
SELECT
A.[Week Income],
A.[Year],
A.[Total] - B.[Total Salary] AS [Balance]
...
FROM (
SELECT
DATEPART( week, dbo.Income.IncomeDate ) AS [Week Income],
DATEPART( YEAR, dbo.Income.IncomeDate ) AS [Year],
SUM ( dbo.Income.CardAmount ) AS [Total Card],
SUM ( dbo.Income.CashAmount ) AS [Total Cash],
SUM ( dbo.Income.TipsAmount ) AS [Total Tip],
SUM ( dbo.Income.SalaryAmount ) AS [Total Salary],
SUM ( dbo.Income.Adjustment ) AS [Total Adjustment]
FROM
dbo.Income
GROUP BY
DATEPART( week, dbo.Income.IncomeDate ),
DATEPART( YEAR, dbo.Income.IncomeDate )
) AS A
LEFT JOIN (
SELECT
DATEPART( wk, dbo.Transactions.PaymentMadeOn ) AS [Week],
COUNT (DATEPART( wk, dbo.Transactions.PaymentMadeOn )) AS [Expenses Count],
DATEPART( YEAR, dbo.Transactions.PaymentMadeOn ) AS [Year],
SUM ( dbo.Transactions.PaymentAmount ) AS [Total]
FROM
dbo.Transactions
GROUP BY
DATEPART( wk, dbo.Transactions.PaymentMadeOn ),
DATEPART( YEAR, dbo.Transactions.PaymentMadeOn )
) AS B ON A.[Week Income] = B.[Week] AND A.[Year] = B.[Year]
ORDER BY
A.[Year],
A.[Week Income]