You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写带Join与Count的SQL查询统计项目各状态库存数量

实现方案

你需要的按不同状态分别统计库存的功能可以通过条件聚合实现:在COUNT聚合函数内部嵌套CASE WHEN做状态判断,匹配到对应状态时返回有效值参与计数,不匹配时返回NULL不会被COUNT统计,正好符合分状态计数的需求。

完整SQL示例

SELECT
  p.Name AS 项目名称,
  p.Street AS 地址,
  p.City AS 城市,
  p.State AS 省份,
  p.Country AS 国家,
  p.CreateDate AS 创建日期,
  COUNT(CASE WHEN s.Status = 'Available' THEN 1 END) AS Available,
  COUNT(CASE WHEN s.Status = 'Reserved' THEN 1 END) AS Reserved,
  COUNT(CASE WHEN s.Status = 'Sold' THEN 1 END) AS Sold
FROM
  project p
LEFT JOIN stock s ON p.Id = s.ProjectID
WHERE
  p.CreateDate > '2016-01-01'
  AND p.Postcode IN ('你指定的邮编1', '你指定的邮编2', '...') -- 替换为实际邮编列表
GROUP BY
  p.Id, p.Name, p.Street, p.City, p.State, p.Country, p.CreateDate

注意事项

  • 上述写法是标准SQL语法,兼容所有主流数据库(MySQL、PostgreSQL、SQL Server、Oracle等)。
  • 这里使用LEFT JOIN是为了保留没有对应库存数据的项目,如果不需要展示无库存的项目,可以替换为INNER JOIN。
  • MySQL环境下可以简化写法为SUM(s.Status = 'Available') AS Available,利用布尔判断返回1/0求和的结果和计数一致,语法更简洁但不具备跨数据库兼容性。
  • GROUP BY 需包含所有SELECT子句中未参与聚合的字段,符合SQL规范要求,避免部分严格模式的数据库报错。

内容的提问来源于stack exchange,提问作者Iryna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:54:05