Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-如何在结果集中为列表中的所有值返回计数值_Sql_Sql Server - Fatal编程技术网

SQL-如何在结果集中为列表中的所有值返回计数值

SQL-如何在结果集中为列表中的所有值返回计数值,sql,sql-server,Sql,Sql Server,这是我所做工作的简化版本,我得到了以下代码: “代码1” “代码2” “代码3” 我被要求了解我们数据库中每种代码都有多少案例 这些代码和许多其他代码都可以在案例组表中找到,但我只需要知道上述代码的编号 我正在使用的当前SQL: SELECT cg.code_typ as [code type] ,COUNT(*) as [Total] -- 62637 FROM CaseGroup cg WHERE cg.code_typ IN ('code1', 'co

这是我所做工作的简化版本,我得到了以下代码:

  • “代码1”
  • “代码2”
  • “代码3”
  • 我被要求了解我们数据库中每种代码都有多少案例

    这些代码和许多其他代码都可以在案例组表中找到,但我只需要知道上述代码的编号

    我正在使用的当前SQL:

    SELECT 
        cg.code_typ as [code type]
        ,COUNT(*) as [Total] -- 62637
    FROM 
        CaseGroup cg
    WHERE 
        cg.code_typ IN ('code1', 'code2', 'code3')
    GROUP BY
        cg.code_typ
    
    我的问题是,如果代码类型的计数为0,则会从结果集中跳过该代码类型。我想要一个结果集,其中列出了所有三个代码,即使计数为0。因此,理想情况下,它将如下所示:

    CodeType    | Num of cases
    code1       | 1 
    code2       | 0 (or blank)
    code3       | 3
    
    CodeType    | Num of cases
    code1       | 1 
    code3       | 3
    
    我目前收到的结果如下所示:

    CodeType    | Num of cases
    code1       | 1 
    code2       | 0 (or blank)
    code3       | 3
    
    CodeType    | Num of cases
    code1       | 1 
    code3       | 3
    
    事实上,我已经得到了大约100种不同的代码类型,表中有150多种不同的代码类型和超过100万个案例,这就是为什么从结果集中跳过代码类型会让人非常沮丧的原因

    我曾尝试将不同的代码添加到临时表中,然后将临时表加入到查询中,但似乎仍然无法获得所需的结果。我相信有一个简单的解决办法,如果有人能提供它,将不胜感激


    如果我能为这个问题提供任何额外的信息或更好的标题,请让我知道:)

    你可以在构建你真正想要的所有代码列表后使用
    左连接

    SELECT c.code_typ as [code type],
           COUNT(cg.code_typ) as [Total] -- 62637
    FROM (SELECT 'code1' as code_typ UNION ALL
          SELECT 'code2' as code_typ UNION ALL
          SELECT 'code3' as code_typ
         ) c LEFT JOIN
         CaseGroup cg
         ON cg.code_typ = c.code_typ
    GROUP BY c.code_typ;
    

    这将使用并非所有数据库都支持的
    联合ALL
    。但是类似的东西可以用在您使用的任何数据库中。

    用您使用的数据库标记您的问题。您缺少的单词是distinct感谢您为我提供了一个解决方案,我将尝试一下:)