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