Mysql 如何将两个不同的字段值合并为一行?
我需要通过将两个相似但略有不同的维度字段值合并到一个新行中来清理一些数据,该新行将两个度量值相加,保持uid和日期不变 当前设置如下所示:Mysql 如何将两个不同的字段值合并为一行?,mysql,sql,merge,Mysql,Sql,Merge,我需要通过将两个相似但略有不同的维度字段值合并到一个新行中来清理一些数据,该新行将两个度量值相加,保持uid和日期不变 当前设置如下所示: ╔═════╦═════════════╦══════╦═══════════╦═══════════╗ ║ id ║ date ║ uid ║ source ║ pageviews ║ ╠═════╬═════════════╬══════╬═══════════╬═══════════╣ ║ 1 ║ 2013-12-1
╔═════╦═════════════╦══════╦═══════════╦═══════════╗
║ id ║ date ║ uid ║ source ║ pageviews ║
╠═════╬═════════════╬══════╬═══════════╬═══════════╣
║ 1 ║ 2013-12-11 ║ 111 ║ source1 ║ 14 ║
║ 3 ║ 2013-12-11 ║ 111 ║ source1a ║ 1 ║
║ 11 ║ 2013-12-11 ║ 222 ║ source1 ║ 3 ║
║ 19 ║ 2013-12-11 ║ 222 ║ source1a ║ 11 ║
╚═════╩═════════════╩══════╩═══════════╩═══════════╝
我想考虑SURCE1和SURCE1A是相等的,合并这两个,得到这个:
╔═════╦═════════════╦══════╦══════════╦═══════════╗
║ id ║ date ║ uid ║ source ║ pageviews ║
╠═════╬═════════════╬══════╬══════════╬═══════════╣
║ 1 ║ 2013-12-11 ║ 111 ║ source1 ║ 15 ║
║ 2 ║ 2013-12-11 ║ 222 ║ source1 ║ 14 ║
╚═════╩═════════════╩══════╩══════════╩═══════════╝
id
不重要,我计划在新的表中重新增加id,结果如下
这是我尝试的,但它没有合并两个记录–我得到匹配的值,但仍然是分开的行:
SELECT date, uid, (SELECT CASE
WHEN source = 'source1a' THEN 'source1'
ELSE source
END) AS 'source', pageviews
FROM trafficSourceMedium
GROUP BY date, source, userid
聚合查询应满足您的要求:
select `date`, uid,
(case when source = 'source1a' then 'source1' else source end) as source,
sum(pageviews) as pageviews
from trafficSourceMedium
group by `date`, uid,
(case when source = 'source1a' then 'source1' else source end);
您需要关于组的案例说明,说明“1”和“2”来自何处?