【发布时间】:2017-09-07 02:42:50
【问题描述】:
我正在使用 Psql,需要通过创建数据透视表从名为 activities 的表中获取值。
目前我有一个这样的查询,它会生成一个包含 first_name|email|signup_hash 列的表:
SELECT COALESCE(profile.first_name, signup_hash.first_name) AS first_name,
users.email,
signup_hash.hash_id,
FROM signup_hash
LEFT OUTER JOIN users ON users.id = signup_hash.user_id
LEFT OUTER JOIN profiles ON profiles.user_id = users.id
INNER JOIN memberships ON memberships.hash_id = signup_hash.hash_id
WHERE memberships.member_id =?
activities 表具有如下字段:user_id|activity_name|date_completed|date_created
每个用户都有activity_name 为“first_login”和“profile_complete”的活动(例如,activity.name="first_login" 和 activity.name="profile_complete)。
我将如何加入活动表,以便最终查询生成一个包含列的表:first_name|email|first_login|profile_complete|signup_hash?
编辑 1)对于特定用户,没有多行“first_login”和“profile_complete”的activity_name 2) first_login 和 profile_complete 列在最终结果中应该包含哪些值?如果值存在则显示 date_completed,否则显示“N/A”
【问题讨论】:
-
对于特定用户,“first_login”和“profile_complete”是否存在多行
activity_name?在activities表中。first_login和profile_complete列应包含在最终结果中的哪些值。 -
1) 特定用户的“first_login”和“profile_complete”没有多行activity_name 2)如果值存在则显示date_completed,否则显示“N/A”
标签: sql postgresql pivot crosstab