首页 > 解决方案 > 如何在 SQL Server 中使用 where 子句计算行数?

问题描述

我几乎被 SQL Server 面临的一个问题所困扰。我想在查询中显示特定值出现的次数。这很容易做到,但我想更进一步,我认为解释我想要实现的最佳方法是使用图像来解释它。

我有两张桌子: PlantChest

正如您在胸部看到的那样,'hoeveelheid' 列表示胸部的饱满程度,'vol' == 1 和 3/4 == 0,75。在植物表中有一列“Hoeveelheidperkist”,它说明了 1 个箱子里可以有多少植物。

select DISTINCT kist.Plantnaam, kist.Plantmaat, count(*) AS 'Amount'
from kist

group by kist.plantnaam, kist.Plantmaat

此查询计算所有箱子,但它不区分“Vol”箱子和“3/4”箱子的数量。它只做This我想要实现的是这个。但我不知道怎么做。任何帮助将非常感激。

标签: sqlsql-server

解决方案


如果您使用 group by,则不需要 distinct
并且如果您想要 hoeveelheid 的单独计数,则需要添加到 group by 子句

    select DISTINCT kist.Plantnaam, kist.Plantmaat, kist.hoeveelheid, count(*) AS 'Amount'
    from kist
    group by kist.plantnaam, kist.Plantmaat, hoeveelheid

或者,如果您想要所有 3 个 samw rowx 计数,您可以使用条件聚合,例如:

    select DISTINCT kist.Plantnaam, kist.Plantmaat
     , sum(case when kist.hoeveelheid ='Vol' then 1 else  0 end) vol 
     , sum(case when kist.hoeveelheid ='3/3' then 1 else  0 end) 3_4 
     , count(*) AS 'Amount'
    from kist
    group by kist.plantnaam, kist.Plantmaat

推荐阅读