Застрял при попытке объединить результаты SQL запросов - PullRequest
0 голосов
/ 28 января 2020

Я застрял, пытаясь объединить результаты этих двух запросов. Внутреннее соединение привело к умножению моих ценностей. Я пытаюсь соединить результаты второй таблицы с результатами первой таблицы. Мои попытки написать подзапрос не увенчались успехом.

Таблица 1 имеет 497 строк. Таблица 2 имеет 507 строк.

Общим столбцом между двумя запросами является столбец [Worker].

Запрос таблицы 1

SELECT 
    '2019-12-31' as Date, [Worker], Right([Address 3],2) as State,
    SUM([YTD Dollars]) AS Sold, SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]) AS Paid Out,
    SUM([YTD Dollars]) - SUM([Curr NotOurs]) + SUM([Prev NotOurs]) AS Ours,
    (SUM([YTD Dollars])-SUM([Curr NotOurs]) + SUM([Prev NotOurs])) * .36 AS General_Costs,
    (SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]))*.16 AS MoreCosts,
    (SUM([YTD Dollars]) - SUM([Curr NotOurs]) + SUM([Prev NotOurs]))-(SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]))-((SUM([YTD Dollars])-SUM([Curr NotOurs]) + SUM([Prev NotOurs])) * .360)-((SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]))*.160) AS Current_Year_Profit_Out
FROM 
    [WORKER_SNAPSHOT].[dbo].[Worker-Detail-12312019]
GROUP BY 
    [Worker], [Worker Name], [Address 3]

Запрос таблицы 2

SELECT 
    '2018-12-31' as Date, [Worker], Right([Address 3],2) as State,
    SUM([YTD Dollars]) AS PrevSold, SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]) AS PrevPaid Out,
    SUM([YTD Dollars]) - SUM([Curr NotOurs]) + SUM([Prev NotOurs]) AS PrevOurs,
    (SUM([YTD Dollars])-SUM([Curr NotOurs]) + SUM([Prev NotOurs])) * .325 AS PrevGeneral_Costs,
    (SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]))*.125 AS PrevMoreCosts,
    (SUM([YTD Dollars]) - SUM([Curr NotOurs]) + SUM([Prev NotOurs]))-(SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]))-((SUM([YTD Dollars])-SUM([Curr NotOurs]) + SUM([Prev NotOurs])) * .325)-((SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]))*.125) As PrevCurrent_Year_Profit_Out
FROM 
    [WORKER_SNAPSHOT].[dbo].[Worker-Detail-12312018]
GROUP BY 
    [Worker], [Worker Name], [Address 3]

Пример данных запроса 1

Результат запроса 2 приводит к схожим данным, просто к другим именам столбцов, которые я хотел бы сохранить.

Date        Worker  State   Sold        Paid Out    Ours       General_Costs    MoreCosts   Current_Year_Profit_Loss
2019-12-31  7775    NE      124492.71   53947.32    123265.90   44375.72       8631.57        16311.28
2019-12-31  3233    NY      85287.94    19763.94    87865.97    31631.74       3162.23        33308.05

Желаемым результатом будут столбцы из запроса1, которые будут сохранены и столбцы из запроса 2 объединяются с запросом 1.

1 Ответ

0 голосов
/ 28 января 2020

Я не знаю, если это именно то, что вы хотите, но посмотрите, будет ли это работать для вас:

SELECT * FROM 
(SELECT 
    '2019-12-31' as Date, [Worker], Right([Address 3],2) as State,
    SUM([YTD Dollars]) AS Sold, SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]) AS Paid Out,
    SUM([YTD Dollars]) - SUM([Curr NotOurs]) + SUM([Prev NotOurs]) AS Ours,
    (SUM([YTD Dollars])-SUM([Curr NotOurs]) + SUM([Prev NotOurs])) * .36 AS General_Costs,
    (SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]))*.16 AS MoreCosts,
    (SUM([YTD Dollars]) - SUM([Curr NotOurs]) + SUM([Prev NotOurs]))-(SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]))-((SUM([YTD Dollars])-SUM([Curr NotOurs]) + SUM([Prev NotOurs])) * .360)-((SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]))*.160) AS Current_Year_Profit_Out
FROM 
    [WORKER_SNAPSHOT].[dbo].[Worker-Detail-12312019]
GROUP BY 
    [Worker], [Worker Name], [Address 3]) as table1
INNER JOIN 
(SELECT 
    '2018-12-31' as Date, [Worker], Right([Address 3],2) as State,
    SUM([YTD Dollars]) AS PrevSold, SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]) AS PrevPaid Out,
    SUM([YTD Dollars]) - SUM([Curr NotOurs]) + SUM([Prev NotOurs]) AS PrevOurs,
    (SUM([YTD Dollars])-SUM([Curr NotOurs]) + SUM([Prev NotOurs])) * .325 AS PrevGeneral_Costs,
    (SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]))*.125 AS PrevMoreCosts,
    (SUM([YTD Dollars]) - SUM([Curr NotOurs]) + SUM([Prev NotOurs]))-(SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]))-((SUM([YTD Dollars])-SUM([Curr NotOurs]) + SUM([Prev NotOurs])) * .325)-((SUM([YTD Paid Out]) + SUM([YTD Cur Saving]) - SUM([YTD Prev Saving]))*.125) As PrevCurrent_Year_Profit_Out
FROM 
    [WORKER_SNAPSHOT].[dbo].[Worker-Detail-12312018]
GROUP BY 
    [Worker], [Worker Name], [Address 3]) as table2 ON table1.Worker = table2.Worker
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...