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

如何按dokid分组求和指定paliwoid值并按列展示?技术求助

实现按dokid分组的多条件聚合统计

嘿,我完全懂你现在的困扰——想要把不同paliwoid的ilosc总和按dokid一行展示,之前用join和子查询越搞越乱对吧?其实这类行转列的需求,用条件聚合是最简洁高效的解法,比你之前尝试的方法要清晰得多。

直接可用的SQL查询

你只需要在SUM()里嵌套CASE WHEN语句,针对每个paliwoid单独统计总和,没有匹配项时返回0即可:

SELECT
  dokid,
  SUM(CASE WHEN paliwoid = 1 THEN ilosc ELSE 0 END) AS sum_paliwo_1,
  SUM(CASE WHEN paliwoid = 2 THEN ilosc ELSE 0 END) AS sum_paliwo_2,
  SUM(CASE WHEN paliwoid = 3 THEN ilosc ELSE 0 END) AS sum_paliwo_3
FROM list
GROUP BY dokid
ORDER BY dokid;

为什么这个方法有效?

  • CASE WHEN会针对每一行判断paliwoid是否匹配,匹配就返回对应的ilosc,否则返回0
  • SUM()会把同一dokid下的所有符合条件的值累加,没有匹配项时累加0,正好得到你要的0结果
  • 整个查询只需要扫描一次表,比多次join或者子查询的性能要好得多,逻辑也更直观

对比你之前的尝试

你之前用join的思路会导致数据重复,需要额外处理;子查询的话要多次查询表,效率低且代码冗余。而条件聚合直接在分组过程中完成所有统计,一步到位。

如果之后paliwoid的取值有变化,比如新增了4,只需要在查询里加一行SUM(CASE WHEN paliwoid =4 ...)就行,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:38:56