SQL Pivot分组异常:如何按GA会话ID输出单行数据?
修复SQL Pivot后会话ID多行问题
问题根源
当前子查询src中包含了projectsite、geo_country、geo_region、geo_city等额外维度字段,同一个ga_session_id可能因为这些字段的不同值生成多条记录。Pivot操作会基于这些字段的组合进行转换,最终导致同一个会话ID出现多行结果。
修复方案
移除子查询中不需要的维度字段,并按ga_session_id、event_date、traffic_source_medium_2分组,确保每个会话ID与媒介类型的组合仅保留一行数据,再执行Pivot操作:
select event_date ,ga_session_id ,organic ,none from ( select sd.ga_session_id ,sd.event_date ,case when traffic_source_medium='(none)' then 'none' else traffic_source_medium end as traffic_source_medium_2 from google_analytics.ga_sessiondetails_distinct sd where sd.ga_session_id in ('1678364512' ,'1677708135') group by sd.ga_session_id, sd.event_date, traffic_source_medium_2 ) as src pivot ( count(traffic_source_medium_2) for traffic_source_medium_2 in ('organic','none') ) as Pvt
补充说明
如果确实需要保留projectsite、地理位置等字段,需确保同一个ga_session_id对应的这些字段值完全一致。此时可将这些字段加入主查询和子查询的group by列表中,但如果同一会话内这些字段存在不同值,仍会产生多行结果。
内容的提问来源于stack exchange,提问作者Swatkat09
相关产品推荐
相关产品推荐

