我正在使用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
当我介绍rate变量时,我的查询开始告诉我我需要group_by子句并且我认为我没有为此做好准备,因为我仍然需要先将am_total和midday_total一起添加,然后再乘以比率。
最终,我正在寻找的是总计。
答案 0 :(得分:0)
如果我理解你的问题,也许这就是你需要的
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