我有一个应用程序可以自动计算每个用户花费的时间。每个用户
这是查询
SELECT
ServiceBase.User
,ServiceBase.Time
,ServiceBase.BillingType
from ServiceBase
这是输出
User 1 | Time
User 2 | Time
User 3 | Time
| Total Time
我希望添加另一个列,根据BillingType拆分Time,而不编辑实际的应用程序代码。它将在一个新的选择字段中读取并自动计算值,因此我希望在查询中使用IF来获取我的结果以在应用程序中显示。
有些事情:
SELECT
ServiceBase.User
,ServiceBase.Time
,ServiceBase.BillingType
,Select If(ServiceBase.BillingType = 'Fixed'){ echo ServiceBase.Time; }else{ echo 0;}
from ServiceBase
获得如此结果:
User 1 | Time | Fixed Time
User 2 | Time | Fixed Time
User 3 | Time | Fixed Time
| Total Time | Total Fixed Time
如何在SQL中执行此操作?
答案 0 :(得分:3)
对于SELECT语句中的IF,您需要CASE
:
SELECT
ServiceBase.User
,ServiceBase.Time
,ServiceBase.BillingType
,CASE WHEN ServiceBase.BillingType = 'Fixed' THEN ServiceBase.Time ELSE 0 END AS [Fixed Time]
FROM ServiceBase
答案 1 :(得分:3)
使用CASE
SELECT
ServiceBase.User
,ServiceBase.Time
,ServiceBase.BillingType
,CASE WHEN ServiceBase.BillingType = 'Fixed' THEN ServiceBase.Time ELSE 0 END
from ServiceBase
答案 2 :(得分:3)
您需要在构造
时使用案例SELECT
ServiceBase.User
,ServiceBase.Time
,ServiceBase.BillingType
,case when ServiceBase.BillingType = 'Fixed' then ServiceBase.Time else 0 end
from ServiceBase