我有一个非常简单的SQL问题。我有一个包含以下列的数据库表:
零件编号
销售类型(为简单起见,称之为销售类型1,2,3,4,5)
我希望编写一个查询,提供以下三列:
我可以很容易地使用类似下面代码的代码显示三列中的两列,但我很难知道如何让所有三列同时出现。
SELECT
PartNumber AS PartNumber,
COUNT(*) AS SalesCount
FROM
SalesTable
WHERE
SalesType = 2
GROUP BY
I.PartNumber
我猜这可能很容易 - 我是一个SQL菜鸟,这是我的第一篇文章!
非常感谢任何帮助!
答案 0 :(得分:0)
未经测试,但你想要这样的东西:
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
答案 1 :(得分:0)
Haven实际上没有运行它,但是这样的事情应该有用......
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;
请注意,COUNT(表达式)仅计算非NULL,而COUNT(*)计算所有行。
......
CASE WHEN SalesType = 2 THEN 1 END
......等同于......
CASE WHEN SalesType = 2 THEN 1 ELSE NULL END
...当SalesType&lt;&gt;时将导致NULL 2,不计算在内。
答案 2 :(得分:0)
您可以使用案例例如:
saletype= case when saletype == 2 then count(saletype)
when saletype <> 2 then count(saletype)