【发布时间】:2020-08-28 12:26:11
【问题描述】:
大家好,
我在组合 3 个不同求和查询的值时遇到问题。
我们有一个包含几列的表,例如:customer_id, amount_hours, start_date, end_date, one_time。
有 3 种不同的类别/条件可以总结出来。
-
one_time 为真
-
end_date 为 NULL,one_time 为 false
-
end_date 不为 NULL 且 one_time 为 false
我完成了这 3 个查询。他们完美地工作。现在我当然想将结果添加到 customer_id 旁边的单个列中。该表代表的是“空闲时间”的数量(对不起,英语不是我的母语,我想不出更好的表达方式)。客户要么购买了一定数量的一次性付款,要么签订了一份每月增加 X 小时的合同。
假设客户 random-store 购买了 20 小时作为一次性付款,去年全年支付了每月 5 小时的费用,而今年已将其更改为每月 8 小时。那么它需要总和 20 + (12months * 5 hours = 60) + (8months {现在是八月} * 8 hours = 64) = 144。
到目前为止,我得到了 3 个查询来获得 20、60 和 64。但是如果我尝试像 select sum ((select sum(....)+select sum(....)+select sum(....)) 这样的东西,那么它就不起作用了。我得到了语法错误,我感觉我正在尝试一些不正确的语法结构应该是什么样子的东西,添加了三个不同的求和查询。尝试谷歌搜索它,没有运气。有人可以帮忙吗?
第一个总和:
select sum (amount_hours) from [myTable] where customer_id=100112 AND one_time= 'True'
第二次总和:
select sum ((datediff(month, Start_Date, End_Date)+1)* amount_hours) from [myTable] where customer_id = 100112 AND one_time = 'False' and end_date is not NULL
第三次总和:
select sum ((datediff(month, Start_Date, Getdate())+1) * amount_hours) from [myTable] where customer_id = 100112 AND one_time = 'False' and end_date is NULL
我的样本故意包含一个 customer_id。以后不用他们和一个小组就可以了。
【问题讨论】: