Aginity Netezza 宏包含一个列表
Posted
技术标签:
【中文标题】Aginity Netezza 宏包含一个列表【英文标题】:Aginity Netezza macro containing a list 【发布时间】:2018-08-09 11:40:27 【问题描述】:我想在我的 Aginity Netezza 宏中放入一个名称列表。例如,我希望能够在以后的查询中重复使用列表(“Adam”、“Bill”、“Cynthia”、“Dick”、“Ella”、“Fanny”),例如在 WHERE 子句中。
我的问题是: (1) 我可以在查询参数编辑器的“值”窗口中放入多少个字符是否有限制? (2) 有没有办法在不使用宏的情况下完成这项工作?例如,在某处预定义此列表?
【问题讨论】:
【参考方案1】:我会将列表放入(临时)表中,并在必要时简单地加入它:
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 示例
【讨论】:
谢谢。我去看看。以上是关于Aginity Netezza 宏包含一个列表的主要内容,如果未能解决你的问题,请参考以下文章
Aginity for Netezza 使用 ODBC 从外部 xlsx 文件创建临时表