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 文件创建临时表

在 Netezza (Aginity) 中安装 UDF

如何在 Netezza(Aginity) 中删除这些记录

在 aginity 中使用 nzsql 命令

Netezza 的 Aginity 工作台不会为大型查询提供语法错误

从 Python 到 SQL(Aginity、Netezza)的 CREATE/DROP 调用不起作用