如何在SQL中只计算1?

如何在SQL中只计算1?,sql,Sql,我正在尝试运行一份报告,以了解上个月有多少车辆需要维修,有多少车辆需要保养。如下图所示,如果车辆进行了维修,则为其分配了1,否则为0。这是我当前的尝试,它同时返回1和0,这是我不想要的。非常感谢您的帮助 有了显示的数据,您可以简单地使用sum()而不是count(): 这是因为值可能是0或1。换句话说,这些列被设计为可以为此目的进行汇总的标志 如果它们可以采用其他值,您可以使用以下内容: sum(case when repair = 1 then 1 else 0 end) as repair

我正在尝试运行一份报告,以了解上个月有多少车辆需要维修,有多少车辆需要保养。如下图所示,如果车辆进行了维修,则为其分配了1,否则为0。这是我当前的尝试,它同时返回1和0,这是我不想要的。非常感谢您的帮助


有了显示的数据,您可以简单地使用
sum()
而不是
count()

这是因为值可能是
0
1
。换句话说,这些列被设计为可以为此目的进行汇总的标志

如果它们可以采用其他值,您可以使用以下内容:

sum(case when repair = 1 then 1 else 0 end) as repairs
注:

  • 您应该限定所有列名。我在猜这些专栏是从哪里来的
  • 切勿在
    FROM
    子句中使用逗号。始终使用正确、明确的
    JOIN
    语法

对于所显示的数据,您可以简单地使用
sum()
而不是
count()

这是因为值可能是
0
1
。换句话说,这些列被设计为可以为此目的进行汇总的标志

如果它们可以采用其他值,您可以使用以下内容:

sum(case when repair = 1 then 1 else 0 end) as repairs
注:

  • 您应该限定所有列名。我在猜这些专栏是从哪里来的
  • 切勿在
    FROM
    子句中使用逗号。始终使用正确、明确的
    JOIN
    语法

    • 这是您现有的where条款:

      where vehicles.Vehicle_ID = vehicles_inspections.Vehicle_ID 
      
      在该条款中,添加以下内容:

      and repair_service_complete = 0
      and repair = 1
      

      或满足您业务需求的任何类似过滤器。

      这是您现有的where条款:

      where vehicles.Vehicle_ID = vehicles_inspections.Vehicle_ID 
      
      在该条款中,添加以下内容:

      and repair_service_complete = 0
      and repair = 1
      

      或者任何类似的过滤器都可以满足您的业务需求。

      嘿,工作非常完美谢谢,只是想知道为什么我不应该使用逗号我最近才开始使用sql我从来没有不使用过它们???@leonHill。它们是过时的古老语法,已经存在了几十年。正确的语法是显式的
      JOIN
      s。它更强大、更标准(这是两个主要原因)。此外,几乎所有人都发现,在连接条件与表引用一起的查询中进行跟踪比在
      where
      子句中混合查询更容易。如果您正在学习SQL,那么学习“JOIN”的
      JOIN
      比学习“JOIN”的“逗号”更有意义。多谢各位,我现在就开始使用JOIN而不是逗号。谢谢你所有的帮助嘿,工作完美的人谢谢你,只是想知道为什么我永远不应该使用逗号我最近才开始使用sql我从来没有不使用过它们???@leonHill。它们是过时的古老语法,已经存在了几十年。正确的语法是显式的
      JOIN
      s。它更强大、更标准(这是两个主要原因)。此外,几乎所有人都发现,在连接条件与表引用一起的查询中进行跟踪比在
      where
      子句中混合查询更容易。如果您正在学习SQL,那么学习“JOIN”的
      JOIN
      比学习“JOIN”的“逗号”更有意义。多谢各位,我现在就开始使用JOIN而不是逗号。谢谢你的帮助