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

Oracle中合并两列后统计第三列的distinct行数

正确SQL实现方案

你的SQL存在两个关键问题:

  • 缺少GROUP BY子句,未按拼接后的账户组合分组,导致只会返回全局汇总结果,而非每个组合的单独统计
  • 字符串拼接格式不符合需求,目标是prefix & value(带空格和连接符&),直接拼接会得到无分隔的字符串

以下是适配不同数据库的正确实现:

Oracle/PostgreSQL

SELECT 
    prefix || ' & ' || value AS "账户(Account)",
    COUNT(DISTINCT thirdcolumn) AS "统计数(Totals)"
FROM Transactions
GROUP BY prefix, value

注:用GROUP BY prefix, value比分组拼接后的字符串性能更优,且能避免极端情况下的拼接冲突

MySQL/MariaDB

SELECT 
    CONCAT(prefix, ' & ', value) AS `账户(Account)`,
    COUNT(DISTINCT thirdcolumn) AS `统计数(Totals)`
FROM Transactions
GROUP BY prefix, value

SQL Server

SELECT 
    CONCAT(prefix, ' & ', value) AS [账户(Account)],
    COUNT(DISTINCT thirdcolumn) AS [统计数(Totals)]
FROM Transactions
GROUP BY prefix, value

关键说明

  • 必须通过GROUP BY指定分组依据,确保每个prefix+value组合单独统计
  • 严格按照需求拼接字符串,加入&分隔符保证输出格式正确
  • 不同数据库的标识符引号规则不同:Oracle用双引号,MySQL用反引号,SQL Server用方括号,需对应使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:00:54