我一直在寻找现有的答案,但根据我的理解,没有匹配(可能会有,但术语/方法没有意义,所以我跳过它)。
方案: 我有3张桌子:
Members
表包含会员资料信息
ActivityStart
表会在成员启动和活动时记录一个条目,为其提供唯一的活动代码并记录成员的ID以及时间戳。
ActivityComplete
表记录相同的信息,但作为具有成员ID和时间戳的活动的退出 - 但是该表还有一个状态字段,用于完整或部分完成。
我需要做的是导出成员个人资料数据以及他们在Start表中的次数以及他们在Exit表中作为部分完成的次数以及完整完成的次数
所以显然我从
的基本查询开始SELECT MemberID, FNAME, EMAIL FROM Members
但我很困惑,我甚至开始根据每条记录的MemberID从其他表中获取计数。
任何人都可以帮我指出正确的方向吗?
我正在使用SQL2012。
答案 0 :(得分:0)
这样的事情:
SELECT M.MemberID, FNAME, EMAIL,
StartCount = SUM(CASE WHEN Ast.ID IS NOT NULL THEN 1 ELSE 0 END),
FullCompleteCount = SUM(CASE WHEN AComp.ID IS NOT NULL AND AComp.Complete = 'Full' THEN 1 ELSE 0 END),
PartialCompleteCount = SUM(CASE WHEN AComp.ID IS NOT NULL AND AComp.Complete = 'Partial' THEN 1 ELSE 0 END),
FROM Members M
LEFT JOIN ActivityStart ASt ON A.MemberID = M.MemberID
LEFT JOIN ActivityComplete AComp ON AComp.MemberID = M.MemberID
GROUP BY
M.MemberID, FNAME, EMAIL
答案 1 :(得分:0)
我认为你可以这样做:
SELECT MemberID, FNAME, EMAIL ,
(select COUNT (*) from ActivityStart start where start.MemberID=m.MemberID) ActivityStartCount,
(select COUNT (*) from ActivityComplete compl where compl.MemberID=m.MemberID) ActivityCompleteCount
FROM Members m