Oracle SQL 的最简单方法产生的答案在一个查询中的行,所以我不需要多次运行该查询?

标签: sql Oracle
发布时间: 2017/4/15 18:59:23
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有这个简单的查询︰

Select 
To_Date('2012-sep-03','yyyy-mon-dd')as Date_Of_Concern,
Count(Player_Id) as Retained
From Player
Where
(To_Date('2012-sep-03','yyyy-mon-dd')-Trunc(Init_Dtime))<=7

这会导致︰

Date_Of_Concern         Retained
 03-Sep-12               81319

此查询计数所有的球员我的数据库中的某一特定日期的 7 天内登录 in(init_dtime)。

因为它的立场,我将不得不为每个"关注的一天"运行此查询多次,希望了解。有更好的解决方案吗?

解决方法 1:

如果您需要为多个日期运行此查询,您将需要一些意味着持有多个值。我建议你使用 NESTED TABLE 对象︰

CREATE TYPE my_dates AS TABLE OF DATE;
/

SELECT d.column_value AS Date_Of_Concern, count(Player_Id) AS Retained
  FROM Player
  JOIN TABLE (my_dates(to_date('2012-sep-03', 'yyyy-mon-dd'),
                       to_date('2012-sep-04', 'yyyy-mon-dd'),
                       to_date('2012-sep-05', 'yyyy-mon-dd'))) d
          ON d.column_value - trunc(Init_Dtime) BETWEEN 0 AND 7
 GROUP BY d.column_value
官方微信
官方QQ群
31647020