我在计算"一周时间"时遇到问题。与本周。我不想使用Week()表达式,因为我的数据使用的是其他周数而不是Spotfire(更改区域和位置不是一个选项)。每天我的数据表都会刷新,因此我的计算列[Age_of_Day]会计算当前(实际)日期的天数。现在我想计算实际周的周数。我在这里有一些数据样本:
RowID Week Day Date Age_of_Day
12 20 do 17-5-2018 8
13 20 vr 18-5-2018 7
14 20 za 19-5-2018 6
15 21 zo 20-5-2018 5
16 21 ma 21-5-2018 4
17 21 di 22-5-2018 3
18 21 wo 23-5-2018 2
19 21 do 24-5-2018 1
20 21 vr 25-5-2018 0
21 21 za 26-5-2018 -1
22 22 zo 27-5-2018 -2
23 22 ma 28-5-2018 -3
24 22 di 29-5-2018 -4
25 22 wo 30-5-2018 -5
26 22 do 31-5-2018 -6
27 22 vr 1-6-2018 -7
现在我想要一个新列[Age_of_Week],它计算[Age]的值与[Age_of_Day] = 0时[Week]的值之间的每一行的差异。它应该是这样的:
RowID Week Day Date Age_of_Day Age_of_Week
12 20 do 17-5-2018 8 1
13 20 vr 18-5-2018 7 1
14 20 za 19-5-2018 6 1
15 21 zo 20-5-2018 5 0
16 21 ma 21-5-2018 4 0
17 21 di 22-5-2018 3 0
18 21 wo 23-5-2018 2 0
19 21 do 24-5-2018 1 0
20 21 vr 25-5-2018 0 0
21 21 za 26-5-2018 -1 0
22 22 zo 27-5-2018 -2 -1
23 22 ma 28-5-2018 -3 -1
24 22 di 29-5-2018 -4 -1
25 22 wo 30-5-2018 -5 -1
26 22 do 31-5-2018 -6 -1
27 22 vr 1-6-2018 -7 -1
希望有人可以帮助我。我想我必须使用OVER()语句和Intersect()但我不知道在这种情况下如何。不幸的是,在其他主题的帮助下,我无法找到答案。
答案 0 :(得分:3)
从版本7开始,您可以使用嵌套聚合,因此该表达式应该可用。
mysql -e ... --table > file
答案 1 :(得分:1)
我找到答案并且相当简单。 [Age_of_Week]的表达式现在是:
If([Age of Day]>=0,Max([Week]) - [Week],If([Age of Day]<0,Min([Week]) - [Week],NULL))
只有在周数持续(如我的情况下)并且不从52重置为1时,这才能正常工作。否则,需要在表达式中添加带有Year()的内容。