这个问题可能看起来完全是愚蠢的,但在这里。
是否可以在sql查询中指定/使用动态列名。
例如假设Table有以下列。
Column: "1", "2", "3", "4", "5"
然后对于给定的X值(来自DATEDIFF
函数),让我们说3 - 我想从“1”到“3”的列中得到值的总和。对于X = 4,列中的值之和从“1”到“4”等等......
实际问题:
此表基本上用于跟踪特定用户在过去X天内登录的次数。 X是定义的。我们仅在用户实际登录时更新记录。因此,为了能够在任何时间点计算正确的值,我想到了这个模式。
“用户”,“LastLoginDate”,“1”,“2”,“3”,“4”,“5”,
"1" - represents number of times user logged in on 1 day before `LastLoginDate`
"2" - represents number of times user logged in on 2 day before `LastLoginDate`
and so on..
现在计算LastLoginDate
+ 2天的价值 - 我只是对"1", "2", "3"
列中的值求和。列"4" and "5"
中的值已过时,因为已过去2天。
我希望我能够正确解释问题。
Jitendra
答案 0 :(得分:3)
我认为你会对这样的桌子感到高兴:
create table login_counts (
user varchar2(30)
,the_date date
,num_logins integer
);
每次用户登录时,您都可以增加相关行。 (如果需要,可以同时删除旧行。)使用此结构,在指定的时间段(如“今天 - 2天”或“last_login - 2天”)中选择登录总和很简单。