如何为SQL查询结果添加列?实现带支付日期的ID计数展示
为每条记录添加所属id的总计数
方法一:使用窗口函数(推荐)
适用于支持窗口函数的数据库(如MySQL 8.0+、PostgreSQL、SQL Server等),写法简洁高效:
SELECT id_num, payment, COUNT(*) OVER (PARTITION BY id_num) AS count FROM tabletesting;
COUNT(*) OVER (PARTITION BY id_num)会按id_num分组统计每组的总记录数,同时将该数值映射到组内的每一条记录上,无需单独加GROUP BY子句,自然保留原表的payment日期字段。
方法二:子查询关联
如果你的数据库不支持窗口函数,可以用子查询先统计每个id的总数,再关联原表:
SELECT t.id_num, t.payment, c.count FROM tabletesting t INNER JOIN ( SELECT id_num, COUNT(*) AS count FROM tabletesting GROUP BY id_num ) c ON t.id_num = c.id_num;
子查询先计算每个id_num的总记录数,再通过id_num将原表数据和统计结果关联,实现每条记录带上对应id的计数。
内容的提问来源于stack exchange,提问作者pesertacoba
相关产品推荐
相关产品推荐

