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

能否在单个Google BigQuery SQL查询中按条件生成多列?

单个SQL查询实现按客户、月份、财年拆分产品与服务销售额

完全可以在单个查询中实现这个需求,核心思路是利用CASE WHEN条件判断配合聚合函数SUM(),在同一分组维度下分别计算产品和服务的销售额。

以下是完整的SQL示例:

SELECT
    cust_no,
    month,
    year AS fiscal_year,
    SUM(amount) AS totalAmt,
    -- 计算产品销售额(item_no非空)
    SUM(CASE WHEN item_no IS NOT NULL THEN amount ELSE 0 END) AS product_amt,
    -- 计算服务销售额(item_no为空)
    SUM(CASE WHEN item_no IS NULL THEN amount ELSE 0 END) AS service_amt
FROM
    sales_detail
GROUP BY
    cust_no,
    month,
    year
ORDER BY
    cust_no,
    fiscal_year,
    month;

关键说明:

  • CASE WHEN会根据item_no是否为空的条件,筛选出对应类型的金额进行求和,不满足条件的金额会被替换为0,不影响最终聚合结果
  • GROUP BY子句保持你需要的分组维度(客户、月份、财年),确保汇总数据的粒度符合要求
  • 同时保留了总销售额totalAmt,与拆分后的产品、服务销售额逻辑一致

如果你的财年逻辑不是直接使用year字段(比如跨自然年的财年规则),只需要调整GROUP BY和SELECT中对应的财年计算逻辑即可,核心的拆分方法保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:06:28