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

SQL多字段唯一值提取及对应数量求和实现求助

没问题,我来帮你搞定这个需求!

解决思路与具体SQL实现

你当前的表是典型的“宽表”结构——把6组值分别存在独立的列里(比如Value1/value1qty到Value6/value6qty),这种结构没法直接做分组汇总,我们需要先把它转换成“长表”结构,再进行聚合操作。

步骤1:把多列数据拆成行数据

用UNION ALL把6组列分别拆成独立的行,让每个Value和对应的Quantity变成一条单独的记录:

SELECT Value1 AS value, value1qty AS quantity FROM your_table
UNION ALL
SELECT Value2 AS value, value2qty AS quantity FROM your_table
UNION ALL
SELECT Value3 AS value, value3qty AS quantity FROM your_table
UNION ALL
SELECT Value4 AS value, value4qty AS quantity FROM your_table
UNION ALL
SELECT Value5 AS value, value5qty AS quantity FROM your_table
UNION ALL
SELECT Value6 AS value, value6qty AS quantity FROM your_table

注意:把your_table替换成你实际的表名就行。UNION ALL会保留所有行(包括重复的value),正好满足我们后续汇总的需求。

步骤2:分组汇总唯一值的总数量

把上面的查询作为子查询,用GROUP BY按value分组,再用SUM()计算每个值对应的总数量:

SELECT value, SUM(quantity) AS total_quantity
FROM (
    SELECT Value1 AS value, value1qty AS quantity FROM your_table
    UNION ALL
    SELECT Value2 AS value, value2qty AS quantity FROM your_table
    UNION ALL
    SELECT Value3 AS value, value3qty AS quantity FROM your_table
    UNION ALL
    SELECT Value4 AS value, value4qty AS quantity FROM your_table
    UNION ALL
    SELECT Value5 AS value, value5qty AS quantity FROM your_table
    UNION ALL
    SELECT Value6 AS value, value6qty AS quantity FROM your_table
) AS transformed_data
WHERE value IS NOT NULL  -- 可选:如果部分Value字段可能为空,加上这句过滤空值
GROUP BY value
ORDER BY total_quantity DESC;  -- 可选:按总数量从高到低排序,方便查看结果

额外小提示

  • 如果你的Value字段存在数据类型不一致的情况(比如数字和字符串混合),可以用CAST(value AS VARCHAR)统一类型后再分组,避免因类型差异导致的分组错误。
  • 哪怕你的表中有多条原始记录,这个方法也完全适用——UNION ALL会把所有行的6组列都拆出来,再统一做汇总。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:15:09