我在查询方面遇到了一些困难,其目的是在当年为用户提供多个线程(称为CS)5%点“加注”。 我的关系模式如下所示:
Thread = (**threadid**, threadname, threadLocation)
threadoffering = (threadid, season, year, user)
user = (**name**, points)
然后,我需要检查:
WHERE thread.threadid = threadoffering.threadid AND where threadoffering.year AND threadoffering.season = currentDate AND where threadoffering.User > 1
然后5%提高TO user.points
我希望它能得到彻底的解释,但除此之外它是简短的文字:
对当前年份和季节中threadLocation CS中具有多个线程的所有用户提供5%的“积分提升”(总是动态的,例如现在是年份= 2010年,季节是=春季)。
我期待着你的回答
此致 埃米尔
答案 0 :(得分:0)
这应该有效:
SELECT
u.name,
CASE WHEN (COUNT(*) > 1)
THEN MIN(u.points) * 1.05
ELSE MIN(u.points)
END AS points
FROM
threadoffering to inner join user u
on to.user = u.name
WHERE
to.year = @targetYear and to.season = @targetSeason
GROUP BY
u.name