sql - 如果另一个字段值是特定字符串,则选择

标签 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 拆分时间,而无需编辑实际的应用程序代码。它将读取一个新的选择字段并自动计算值,因此我希望只在查询中使用一个 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 中执行此操作?

最佳答案

对于 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

关于sql - 如果另一个字段值是特定字符串,则选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48815483/

相关文章:

sql-server-2012 - SSAS 维度属性作为计算量度

sql - EXECUTE 后的事务计数表明 BEGIN 和 COMMIT 语句的数量不匹配。先前计数 = 1,当前计数 = 0

mysql - 需要帮助创建数据库结构

mysql - 将数据从一个表移动到mysql中的另一个表并删除该表

sql-server - Excel.Application 不能使用 SQL 作业在 PowerShell 中运行,但可以从命令行运行

sql - 如何找到表格中的最大值

c# - 如何在 Azure 中存储文件

mysql - 如何在mysql View 中重用别名列?

c# - 数据库预定操作

c# - 在 ASP.NET 中从数据库中获取数据而不刷新页面