【发布时间】:2017-02-21 04:18:43
【问题描述】:
我想在查询中传递一些变量,并且需要在像 spotfire 这样的报告工具中使用结果集。
select prod_id,sum(sal)
from cal c
where qtr_num in (:q)
group by 1
having sum(sal)>0;
:q 可以是单值('Q1'),也可以是多值('Q1','Q2','Q3','Q4')。
我知道我们可以使用宏作为参数视图。但我们不能在选择部件/报告工具中使用该宏返回的结果集。
其他选项是创建不带过滤器的视图,然后使用带有参数过滤器的视图。
create view v
as
(select prod_id,sum(sal)
from cal c
group by 1
having sum(sal)>0);
select *
from v
where qtr_num in (:q);
但在我看来,这种方法可能会跳过分区访问(在 qtr_num 上创建)和低效的查询方式。此查询仅用于演示目的。实际查询比这复杂得多。
有什么方法可以在 teradata 中实现这一点?
【问题讨论】:
-
我正在修改一种使用 strtok_split_to_table 的方法,该方法可能会奏效,但它导致我的系统出现故障转储......所以我建议不要这样做。