SQL Server - нужна помощь с суммами и регистрами - PullRequest
0 голосов
/ 31 октября 2011

Я использую SQL Server 2005. Мне нужно сложить столбцы (AM, Midday, Evening), чтобы увидеть, какие из них содержат значение «YES», а затем взять эту сумму и умножить ее на коэффициент для каждогострока для клиента.

Вот запрос, который у меня пока есть:

Select 
Sum(Case When morning = 'yes' Then 1 Else 0 End) am_total,
Sum(Case When midday = 'yes' Then 1 Else 0 End) midday_total
From services
where client_id = 24

со следующим выводом

am_total    midday_total  
45          49

Когда я ввожу переменную скорости, мой запрос начинает сообщать мне, что яМне нужно предложение group_by, и я не думаю, что я готов к этому, поскольку мне все еще нужно сначала добавить am_total и midday_total вместе, а затем умножить это на ставку.

В конечном итоге все, что я ищу, - это общий итог.

1 Ответ

0 голосов
/ 31 октября 2011

Если я понимаю ваш вопрос, возможно, это то, что вам нужно

declare @rate int
set @rate = 2 /*what ever rate is */

select am_total * @rate as am, midday_total * @rate as midday
from (
  Select 
   Sum(Case When morning = 'yes' Then 1 Else 0 End) am_total,
   Sum(Case When midday = 'yes' Then 1 Else 0 End) midday_total
  From services
  where client_id = 24
)

Вы также можете присоединиться к другой таблице и использовать ее столбцы в расчете

  Select 
   Sum(Case When morning = 'yes' Then 1 * u.rate Else 0 End) am_total,
   Sum(Case When midday = 'yes' Then 1 * u.rate Else 0 End) midday_total
  From services srv inner join users u on services.id = u.service_id -- assuming this is relation

обратите внимание на u.rate выше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...