Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何将聚合的计算列合并到一个表中_Sql_Tableau Api - Fatal编程技术网

Sql 如何将聚合的计算列合并到一个表中

Sql 如何将聚合的计算列合并到一个表中,sql,tableau-api,Sql,Tableau Api,我必须计算用于报告的聚集列,并将它们全部放在一个表中。我创建了一个参考日期表来比较日期 我的源表看起来像模拟数据 memberid startdate enddate 1 2017-05-23 2017-06-21 2 2017-05-01 2017-06-17 3 2017-04-23 2017-05-28 4 2017-06-01 2017-07-21 5 201

我必须计算用于报告的聚集列,并将它们全部放在一个表中。我创建了一个参考日期表来比较日期

我的源表看起来像模拟数据

memberid    startdate     enddate
1          2017-05-23    2017-06-21
2          2017-05-01    2017-06-17 
3          2017-04-23    2017-05-28
4          2017-06-01    2017-07-21
5          2017-04-30    2017-05-27
我必须每周做一次计算,这将是一种累积式的计算。例如,如果我想在2017-06-04运行报告,那么我必须计算前一周的数据。 每周应该有以下指标

1. how many members are new this week? count(Id's) where startdate >= 2017-05-28 
2. how many are discharged this week? count(Id's) where enddate=2017-05-27
3. how many are still in service? count(ID's) where startdate<=2017-05-28 and enddate >= 2017-05-28
-出院

2.select  DATEADD(DAY, 1 - DATEPART(WEEKDAY, c.pkdate), CAST(c.pkdate AS DATE)) as weekdate,count(distinct memberid) as dischargedmembers from #tempauth t
join [dbo].[Calendardays] c
on dateadd(dd,-8,dateadd(dd,-1,weekstart)) =t.enddate
group by DATEADD(DAY, 1 - DATEPART(WEEKDAY, c.pkdate), CAST(c.pkdate AS DATE))

有谁能帮我找到仍在服役的成员吗?另外,我必须计算这三个计算结果,并将它们放在一个表格中用于我的报告。我该怎么做呢?

你可以计算前几周的相关日期。G在CTE中,并将结果作为子查询返回:

with cte as
 (
   select distinct
          DATEADD(dd, -(DATEPART(dw, pkdate) - 1), pkdate) as FirstDayOfWeek,
          DATEADD(DAY, 7 - (DATEPART(dw, pkdate)), pkdate) as LastDayOfWeek
     from dbo.Calendardays
    where pkdate <= dateadd(day, -8, getdate()) --> Calendardays until last week
 )
 select (select count(distinct memberid)
           from #tempauth t
           where t.StartDate >= cte.FirstDayOfWeek) as NewMembers,
        (select count(distinct memberid)
           from #tempauth t
          where ...)                                as DischargedMembers
        (select count(distinct memberid)
           from #tempauth t
          where ...)                                as MembersStillInService
      from cte;

你可以计算前几周的相关日期。G在CTE中,并将结果作为子查询返回:

with cte as
 (
   select distinct
          DATEADD(dd, -(DATEPART(dw, pkdate) - 1), pkdate) as FirstDayOfWeek,
          DATEADD(DAY, 7 - (DATEPART(dw, pkdate)), pkdate) as LastDayOfWeek
     from dbo.Calendardays
    where pkdate <= dateadd(day, -8, getdate()) --> Calendardays until last week
 )
 select (select count(distinct memberid)
           from #tempauth t
           where t.StartDate >= cte.FirstDayOfWeek) as NewMembers,
        (select count(distinct memberid)
           from #tempauth t
          where ...)                                as DischargedMembers
        (select count(distinct memberid)
           from #tempauth t
          where ...)                                as MembersStillInService
      from cte;

查询3有什么问题?我建议使用CTE或子查询来获取前一周的相关日期前一个wekk的第一个日期、最后一个日期等。。。。您的外部查询可以依赖这些日期,而无需反复计算。我不知道如何将所有内容放在一个表中。不知何故,我的计算出错了。您正在无限制地交叉连接表/视图日历日,这意味着您正在连接日历日的所有行,我认为这不是您想要的。CalendardDays是什么样子的?CalendardDays只是一个只有日期的参考表。。我基本上要计算每周有多少会员在服务。如果startdate='this week',如何动态计算?查询3有什么问题?我建议使用CTE或子查询来获取前一周的相关日期前一个wekk的第一个日期、最后一个日期等。。。。您的外部查询可以依赖这些日期,而无需反复计算。我不知道如何将所有内容放在一个表中。不知何故,我的计算出错了。您正在无限制地交叉连接表/视图日历日,这意味着您正在连接日历日的所有行,我认为这不是您想要的。CalendardDays是什么样子的?CalendardDays只是一个只有日期的参考表。。我基本上要计算每周有多少会员在服务。如果startdate='this week',我如何动态地计算它?如果我创建了一个存储过程,那么我就无法将它连接到tableau,因为执行它需要很多时间。因此,我们考虑创建聚合视图并显示视图中的值。存储过程中要传递的日期应该是什么?我不能在表格中给出日期参数。我的视图应该显示从2017年1月1日到最近一周的数据。您好,非常感谢。。这就是我想要构建视图的目的。如果我创建了一个存储过程,那么我就无法将它连接到tableau,因为执行它需要很多时间。因此,我们考虑创建聚合视图并显示视图中的值。存储过程中要传递的日期应该是什么?我不能在表格中给出日期参数。我的视图应该显示从2017年1月1日到最近一周的数据。您好,非常感谢。。这就是我正在寻找建立一个视图。