SQL-在何处计数

SQL-在何处计数,sql,counting,Sql,Counting,我有一个非常简单的SQL问题。我有一个包含以下列的数据库表: 零件号 销售类型(为简单起见,将其称为销售类型1,2,3,4,5) 我希望编写一个查询,给出以下三列: 零件号 销售类型的销售总数=2 销售类型2的销售总数 我可以很容易地用与下面代码类似的代码显示三列中的两列,但如何让这三列同时显示,我感到困惑 SELECT PartNumber AS PartNumber, COUNT(*) AS SalesCount FROM SalesTable WHERE

我有一个非常简单的SQL问题。我有一个包含以下列的数据库表:

  • 零件号

  • 销售类型(为简单起见,将其称为销售类型1,2,3,4,5)

  • 我希望编写一个查询,给出以下三列:

    • 零件号
    • 销售类型的销售总数=2
    • 销售类型2的销售总数
    我可以很容易地用与下面代码类似的代码显示三列中的两列,但如何让这三列同时显示,我感到困惑

    SELECT 
        PartNumber AS PartNumber,
        COUNT(*) AS SalesCount
    FROM 
        SalesTable
    WHERE 
        SalesType = 2
    GROUP BY 
        I.PartNumber
    
    我猜这可能很简单-我是一个SQLNoob,这是我的第一篇帖子


    非常感谢您的帮助

    未经测试,但您需要以下内容:

     SELECT PartNumber, sum(case when SalesType=2 then 1 else 0) as Type2SalesCount,
        sum(case when SalesType<>2 then 1 else 0) as NoNType2SalesCount
        FROM SalesTable
        Group by PartNumber
    
    选择PartNumber,sum(SalesType=2时为1,否则为0)作为Type2SalesCount,
    作为非类型2 SalesCount求和(当SalesType2为1时为1,否则为0时为1)
    从SalesTable
    按零件号分组
    
    听起来你要找的是

    选择
    零件号,
    求和(SalesType=2时为1,否则为0结束)作为SaleTypeTowCount,
    作为SalesOtherCount求和(当SalesType为2时,则为1,否则为0结束时)
    从…起
    销售台
    分组
    零件号
    
    实际上还没有运行它,但是像这样的东西应该可以工作

    SELECT
        PartNumber,
        COUNT(CASE WHEN SalesType = 2 THEN 1 END) Count2,
        COUNT(CASE WHEN SalesType <> 2 THEN 1 END) CountNot2
    FROM
       SalesTable
    GROUP BY
       PartNumber;
    
    …相当于

    CASE WHEN SalesType = 2 THEN 1 ELSE NULL END
    

    …并且当SalesType 2未计数时将导致NULL。

    您可以使用case,例如:
    saletype=case当saletype==2时,则计数(saletype)
    
    当saletype 2计数(saletype)

    时,select语句中没有
    。你测试过你的查询了吗?你缺少分组依据。刚刚编辑的应该是“AS”。我简化了这个问题的示例,因此无法准确测试代码。你知道如何显示我所希望的所有三列吗?如果我有GroupBy,它将不会是三列,对吗?没有GroupBy,计数就不起作用(除了在MySQL下,它也不起作用,但你不认为它是明确的)。完美-谢谢!!!这就做到了(我确实必须添加一个结束…否则为0结束)。但这正是我想要的——非常感谢!!
    
    CASE WHEN SalesType = 2 THEN 1 END
    
    CASE WHEN SalesType = 2 THEN 1 ELSE NULL END