动态选择列 - Oracle SQL查询

时间:2014-03-06 00:14:02

标签: sql oracle

这个问题可能看起来完全是愚蠢的,但在这里。

是否可以在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

1 个答案:

答案 0 :(得分:3)

我认为你会对这样的桌子感到高兴:

create table login_counts (
   user       varchar2(30)
  ,the_date   date
  ,num_logins integer
);

每次用户登录时,您都可以增加相关行。 (如果需要,可以同时删除旧行。)使用此结构,在指定的时间段(如“今天 - 2天”或“last_login - 2天”)中选择登录总和很简单。