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

SQL如何实现按币种统计数量金额并转为同行动态多列展示

实现前提

假设你的数据表名为currency_records,包含3个核心字段:

  • id:分组ID
  • currency_code:币种编码
  • amount:对应交易金额

固定币种统计方案

如果你要统计的币种是固定的(比如示例里的123、456),直接用条件聚合就能实现,该写法兼容MySQL、PostgreSQL、Oracle、SQL Server等所有主流数据库:

SELECT
  id AS ID,
  COUNT(*) AS Total_Number,
  SUM(amount) AS Total_Sum,
  SUM(CASE WHEN currency_code = 123 THEN 1 ELSE 0 END) AS Number_Currency_123,
  SUM(CASE WHEN currency_code = 123 THEN amount ELSE 0 END) AS Sum_Currency_123,
  SUM(CASE WHEN currency_code = 456 THEN 1 ELSE 0 END) AS Number_Currency_456,
  SUM(CASE WHEN currency_code = 456 THEN amount ELSE 0 END) AS Sum_Currency_456
-- 有其他要统计的币种,直接按照上面的格式新增CASE WHEN语句即可
FROM currency_records
GROUP BY id
ORDER BY id;

逻辑很简单:统计每条记录的时候,如果符合对应币种的条件就计数+1/累加对应金额,不符合就加0,按ID分组汇总后就能得到每个ID各维度的统计值。


非固定币种扩展说明

如果币种类型不固定、没法提前穷举写死,就需要用动态SQL拼接实现,不同数据库的动态SQL语法有差异:

  • MySQL用PREPARE + EXECUTE实现
  • PostgreSQL用format()函数拼接后执行
  • Oracle用EXECUTE IMMEDIATE实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:36:00