SQL Pivot查询优化:移除session_id并重命名登录登出列
优化后的Pivot查询方案
针对你的需求,调整后的SQL查询如下:
SELECT user, hostname, `'login'` AS 登录时间, `'logoff'` AS 登出时间 FROM ( SELECT user, date, activity, hostname FROM view ) t PIVOT ( MAX(date) FOR activity IN ('login', 'logoff') ) p
关键调整说明:
- 子查询中移除了
session_id字段,因为最终结果不需要展示它,且同一会话的登录/登出操作通过MAX(date)聚合后能准确对应到各自的时间 - 主查询中给Pivot生成的默认列名
'login'和'logoff'重命名为符合需求的“登录时间”和“登出时间” - 注意:不同数据库对带引号列名的处理略有差异,比如MySQL用反引号包裹,Oracle用双引号,可根据你使用的数据库类型调整包裹符号
内容的提问来源于stack exchange,提问作者nav
相关产品推荐
相关产品推荐

