选择IF另一个字段值是特定字符串

时间:2018-02-15 20:12:44

标签: sql sql-server sql-server-2012

我有一个应用程序可以自动计算每个用户花费的时间。每个用户

这是查询

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中执行此操作?

3 个答案:

答案 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