我有一个如下所示的 SQL 表:
Flow Head Series_Name
0 null A
0 null B
10 null A
10 null B
20 null A
22.5 88 B
20 null B
30 null A
30 null B
39.42 60.1 A
40 null A
40 null B
etc... etc... etc...
5000 null A
5000 null B
基本上,此表的想法是能够使用它在 Cognos Report Studio 的折线图元素中绘制流量与水头。这很好用,因为我可以将 Flow 列拖放到 X 轴中,将 Head 列拖放到 Y 轴中,并将 Series_Name 列拖放到图例中。对于上面的示例表,这会产生两条曲线,A 和 B。
请注意,两个系列的 Flow 值范围从 0 到 5000,以 10 递增。另请注意,Head 值大部分为空,除非数据点可用。(通常,数据点的 Flow 值不会完全落在可被 10 整除的数字上,但如果是这样,那对我遇到的问题应该没关系。)
所以,这就是我遇到的问题。当我生成折线图时,一切看起来都很好,除了那些数据点具有较低流量值的资产。对于这些,0 到 5000 的固定 X 轴范围不会产生漂亮的折线图,因为曲线在 Y 轴上被挤压。(顺便说一下,Y 轴看起来很好,因为折线图元素会自动缩放其 Y 轴。)
我知道解决这个问题需要做些什么。我需要能够向该表编写一个 SQL 查询,以过滤掉所有 Head = null 的行,不管最后一个 Head != null 行是什么。有一个偏移量也很好,这样直到最后一个 Head != null 行之后的几行才开始切断。这将使图表看起来更好。
对于我上面给出的示例表,如果您假设 Flow = 39.42 & Head = 60.1 行是表中的最后一个 Head != null 行,那么该表的一个很好的查询结果将如下所示,其中排除了所有经过它的行(偏移 6 行):
Flow Head Series_Name
0 null A
0 null B
10 null A
10 null B
20 null A
22.5 88 B
20 null B
30 null A
30 null B
39.42 60.1 A
40 null A
40 null B
50 null A
50 null B
60 null A
60 null B
我知道这需要在 SELECT 语句的末尾有一个 WHERE 子句,但我不确定如何用这样的子句来表达这样的子句,以便仅当它们是查询结果不必要的后半部分的一部分时才排除行。SQL 查询需要使用 Native SQL 语法编写。
这种截断所有不必要数据的查询结果,图形会很漂亮!感谢您的帮助!