这是我第一次在此网站上提问,因此,如果这个问题提出的要求很差,我将不胜感激。
所以问题出在下面。 在我的表格中,我们将其称为“总计”,我有销售总额。每行都有该周的完整总计,以及该周每一天的总计。因此,这五个总数总计为星期总数。 每行还包含一年中的一周(格式:yyyyww)。
所以它看起来像这样
%
现在我的问题是,如何从一个查询中说出201921周的星期三到201924周的星期二的所有总计?如果可以在一个查询中得到它,那将是很好,但是如果绝对不可能,那么两个或三个也应该很好。 如果我的数学正确,则预期输出为180。
答案 0 :(得分:0)
尽管可能更有效/更干净的方法,但仍然可以使用CASE WHEN语句来实现。您可以尝试这样的事情:
SELECT
sum(
CASE WHEN date < YEARWEEK($startDate, 0) OR date > YEARWEEK($endDate, 0) THEN 0
WHEN date = YEARWEEK($startDate, 0) THEN
CASE WHEN DAYOFWEEK($startDate) = 1 THEN totalsu + totalmo + totaltu + totalwe + totalth + totalfr + totalsa
WHEN DAYOFWEEK($startDate) = 2 THEN totalmo + totaltu + totalwe + totalth + totalfr + totalsa
WHEN DAYOFWEEK($startDate) = 3 THEN totaltu + totalwe + totalth + totalfr + totalsa
WHEN DAYOFWEEK($startDate) = 4 THEN totalwe + totalth + totalfr + totalsa
WHEN DAYOFWEEK($startDate) = 5 THEN totalth + totalfr + totalsa
WHEN DAYOFWEEK($startDate) = 6 THEN totalfr + totalsa
WHEN DAYOFWEEK($startDate) = 7 THEN totalsa
END
WHEN date = YEARWEEK($endDate, 0) THEN
CASE WHEN DAYOFWEEK($endDate) = 7 THEN totalsu + totalmo + totaltu + totalwe + totalth + totalfr + totalsa
WHEN DAYOFWEEK($endDate) = 6 THEN totalsu + totalmo + totaltu + totalwe + totalth + totalfr
WHEN DAYOFWEEK($endDate) = 5 THEN totalsu + totalmo + totaltu + totalwe + totalth
WHEN DAYOFWEEK($endDate) = 4 THEN totalsu + totalmo + totaltu + totalwe
WHEN DAYOFWEEK($endDate) = 3 THEN totalsu + totalmo + totaltu
WHEN DAYOFWEEK($endDate) = 2 THEN totalsu + totalmo
WHEN DAYOFWEEK($endDate) = 1 THEN totalsu
END
WHEN date > YEARWEEK($startDate, 0) OR date < YEARWEEK($endDate, 0) THEN totalsu + totalmo + totaltu + totalwe + totalth + totalfr + totalsa
END
)
FROM
table;
我不是100%知道语法,但是它应该提供预期的结果或为您提供获取它们的方法。我使用了YEARWEEK和DAYOFWEEK函数。