将平面SQL表转换为报表,在视图查询中聚合数字和嵌套计算/比较

将平面SQL表转换为报表,在视图查询中聚合数字和嵌套计算/比较,sql,sql-server,Sql,Sql Server,我有一个巨大的平板电脑,里面有来自手持设备的数据。我目前使用它为一个“站点”生成报告,但这是通过一个自制的PAAS完成的。该报告非常有效,允许您查看单个站点,但大多数计算都是在这个.net层上完成的。然而,我现在需要扩展到包括所有站点的关键信息,以一种总结的方式逐行列出每个“站点”。我有一个元素重复面板,可以通过循环表或视图来显示所有这些信息,然后引导用户进入paas上已经存在的单个报告,但我需要基本上创建一个视图我认为这是最好的,但我可能错了?这将保存所有要显示的汇总信息,以及ID站点名称,以

我有一个巨大的平板电脑,里面有来自手持设备的数据。我目前使用它为一个“站点”生成报告,但这是通过一个自制的PAAS完成的。该报告非常有效,允许您查看单个站点,但大多数计算都是在这个.net层上完成的。然而,我现在需要扩展到包括所有站点的关键信息,以一种总结的方式逐行列出每个“站点”。我有一个元素重复面板,可以通过循环表或视图来显示所有这些信息,然后引导用户进入paas上已经存在的单个报告,但我需要基本上创建一个视图我认为这是最好的,但我可能错了?这将保存所有要显示的汇总信息,以及ID站点名称,以便在选择重复面板中的项目时,我可以将用户放到他需要的单个站点报告上

所以这里什么都没有

该数据库用于根据已检查的安全防护标记创建报告。我们从haldheld设备中提取信息,如平均巡逻时间、路线上丢失的标签、按下的警报等

我的表格中有以下重要列:

数据导入-此表显示“事务”数据。基本上,我的设备的每一条数据线

-Site Name
-Route ID
-Patrol ID
-Type
-Tag Name
-Occurrence Date
路线配置文件-这是路线的配置文件,基本上包含一整套路线ID的“标签”,可以根据这些标签进行检查,以查看在每次巡逻中没有检查哪些标签,以及警卫巡逻的“成功”程度。我们不必使用此表来汇总了解巡逻中检查了多少标签,但“TotalTags”值用于检查

-RouteID
-Site Name
-TotalTags
-PerfectPatrol
我正在尝试获得以下基本数据。现在的挑战是生成一个包含所有汇总计算的视图。根据发生日期列,每一行将覆盖前一天早上6点到早上6点的窗口。对于每个站点,我试图计算出以下内容,这些内容将有效地位于该视图的一行中:

一,。所需巡逻-这是通过计算“类型”栏中有关站点的巡逻开始次数来计算的,每行将属于一个站点,并有效地汇总该站点

二,。route中的标记-直接从route profile表中提取,与route ID匹配

三,。平均巡逻时间-当类型Column中出现“巡逻开始”和“巡逻完成”值时,通过测量中每个巡逻唯一巡逻ID的“发生日期”日期时间差来计算平均巡逻时间。这将被聚合,例如10次巡逻、12次巡逻和14次巡逻将导致12分钟的ave巡逻时间

四,。成功巡逻-这是此时间窗口中发生的巡逻次数的聚合值,其百分比匹配或大于路线配置文件中的“perfectpatrol”列。perfectpatrol中的此数字通常为100%除以所需巡逻次数。请参见1。基本上,将在该唯一巡逻中获得的标签数量(大于或等于该路线totaltags中的标签数量)与所需巡逻总数相加,见1

五,。不完整巡逻-包含一些低于perfectpatrol百分比的标签的巡逻,但不是没有。这里值得注意的是,可以通过在“type”列中出现“tagcompleted”来识别标记

六,。巡逻失败-巡逻中未检查任何标记,因此如果在唯一的巡逻ID中,“类型”列中没有“标记完成”值

七,。引发的报警总数-在“类型”列中发生“呼叫”、“紧急”或“强制停机”的次数

八,。Call Me Alarms(呼叫我警报)-“type”(类型)列中出现“CALLME”(呼叫我)的次数

九,。紧急报警-在“类型”栏中发生“紧急”的次数

十,。手动停机报警-在“类型”栏中出现“手动停机”的次数

注意事项: 1.有时每个站点可能有多条路由。在这种情况下,每条路线最好有自己的行,共享相同的站点名称。 2.每个报告的时间超过24小时,从早上6点到早上6点,以及前一天。因此,数据导入表上的覆盖过滤器将确保这一点

由于存在于一个巨大的SQL查询中的所有这些操作的规模和复杂性,我不知道如何实现这一点。如前所述,我们使用的内部paas几乎不需要编码,因此我寻求建议/帮助


我该如何着手解决这个问题?

问题是我已经孤立地攻击了其中的一部分,但我不知道从哪里开始一次完成这一切。例如,我有一个计算巡逻长度的视图,但我使用paas将单个报告中的长度聚合为平均巡逻时间
在这方面的一般结构的建议,这将足以让我去,尝试和错误,直到我得到它的权利。你将需要一些窗口功能。阅读OVER关键字。无法穿透整个墙的文本,但我发现“xxx”出现的次数。。。当某个列='xxx'然后另一个列0结束时,这就是简单的例子。你试过什么?Stackoverflow不是一个显示代码站点。如果您有问题,我们将回答您的问题。通常,给出需求和期望代码不会得到积极的响应。