【发布时间】:2014-05-04 08:38:49
【问题描述】:
我试图找出每个成员的积分数量。两个相关表是LESSON 和POINT。我必须先将购买的积分相加,POINT.Point,然后减去使用的积分,LESSON.LessonPoint。这两个操作自然必须使用GROUP BY MemberId。
我最初尝试了以下查询,但它正在计算 LESSON 表中每条记录的 SUM。例如,如果购买的实际积分总和等于 10,并且上过 5 节课,每节课 1 分,结果将是 45。总和 10 减去 1 点 5 倍 ((10-1)*5 =45)。但是,追求的结果是 5(买了 10 点减去使用了 5 点)。 PIA = 入账。
选择 P1.MemberId,SUM(P1.Point)-SUM(L1.LessonPoint) 作为 PIA
从 P1 点左加入课程 L1 在 P1.MemberId= L1.MemberID 按 P1.MemberId 分组
ORDER BY P1.MemberId DESC
我只想计算每个 SUM 一次,所以我需要某种子查询。然后我尝试了以下操作,但我收到一个错误,说它无法识别 SLP。 SLP = 课分总和。
SELECT P1.MemberId, SUM(P1.Point)-SLP AS PIA FROM POINT P1 FULL JOIN P1.MemberId=L1.MemberId 上的第 L1 课按 P1.MemberId 分组 WHERE P1.MemberId IN (SELECT SUM(L1.LessonPoint) 作为来自 LESSON L1 组的 SLP BY L1.MemberId)
然后我尝试解决问题。但是,下面给出的结果与第一个查询相似,因为 POINT.Point 的 SUM 是针对 LESSON.LessonPoint 中与 MemberId 对应的每条记录计算的。
从 P1 点选择 P1.MemberId、SUM(P1.Point)、SUM(L1.LessonPoint) L1.MemberId=P1.MemberId GROUP BY L1.MemberId 上的完整课程 L1, P1.MemberId
我希望这个问题得到了明确的表述。我已经达到了我的知识和能力的极限,请帮助。
【问题讨论】:
标签: sql sql-server