T SQL - возвращает процент при использовании группы без группировки по столбцам процент - PullRequest
0 голосов
/ 25 марта 2020

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

Select datepart(wk,ts.TotalDate) AS Date,
       Tender_Type,
       SUM(TransactionsbyType),
       SUM(TotalDayTransactions),
       ROUND(TransactionsbyType * 100.0 / TotalDayTransactions, 3),
       ROUND(TenderAmountAuthorized * 100.0 / TotalDayAuthAmount, 3) AS 'PercentOfSalesByTenderType'
from  #TotalSalesByOrderingSystem tso
join #TotalSales ts on ts.TotalDate = tso.TotalOrderingSysDate 
group by  datepart(wk,ts.TotalDate), Tender_Type  
order by  datepart(wk,ts.TotalDate), Tender_Type

Когда выполненный запрос возвращает ошибку, в которой указано, что столбцы используются для получения процента TransactionsbyType и TotalDayTransactions не в совокупности.

Если я размещу их в совокупности, данные не будут корректно разбиты на недели. Ранее я пробовал решения здесь безуспешно: stackoverflow.com / questions / 6207224 / вычисление процентов с группой по запросу

1 Ответ

1 голос
/ 25 марта 2020

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

Select datepart(wk,ts.TotalDate) AS Date,
       Tender_Type,
       SUM(TransactionsbyType),
       SUM(TotalDayTransactions),
       ROUND(SUM(TransactionsbyType) * 100.0 / SUM(TotalDayTransactions), 3),
       ROUND(SUM(TenderAmountAuthorized) * 100.0 / SUM(TotalDayAuthAmount), 3) AS 'PercentOfSalesByTenderType'
from  #TotalSalesByOrderingSystem tso
join #TotalSales ts on ts.TotalDate = tso.TotalOrderingSysDate 
group by  datepart(wk,ts.TotalDate), Tender_Type  
order by  datepart(wk,ts.TotalDate), Tender_Type
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...