包含列表的Aginity Netezza宏

时间:2018-08-09 11:40:27

标签: macros netezza

我想在Aginity Netezza宏中放置一个名称列表。例如,我希望能够在以后的查询中重复使用该列表(“亚当”,“比尔”,“辛西娅”,“迪克”,“埃拉”,“范妮”)。在WHERE子句中。

我的问题是: (1)在查询参数编辑器的“值”窗口中可以放入多少个字符有限制吗? (2)有没有一种方法可以在不使用宏的情况下进行这项工作?例如,在某处预定义此列表?

1 个答案:

答案 0 :(得分:0)

我会将列表放入(临时)表中,并在必要时简单地加入该列表:

Create temp table names as
Select ‘Adam’::varchar(50)
Union all Select ‘Bill’::varchar(50)
Union all Select ‘Cynthia’::varchar(50)
Union all Select ‘Dick’::varchar(50)
Union all Select ‘Ella’::varchar(50)
Union all Select ‘Fanny’
;
Select x.a,x.b 
from x 
where x.name in (select * from Names)
;
Select 
case 
    when x.name in (select * from Names) 
    then ‘Special’ 
    Else ‘Other’ 
End as NameGrp,
Count(*) as size,
Sum(income) as TotalIncome
Group by NameGrp
Order by size desc
;

或者,netezza有一个扩展工具包,该工具包支持ARRAY数据类型,但是特别是如果您将第一个查询用于此目的,它的性能将不佳。有兴趣吗参见此处:https://www.ibm.com/support/knowledgecenter/en/SSULQD_7.2.1/com.ibm.nz.sqltk.doc/c_sqlext_array.html或google以获取示例