有一个价值列表,如`
`where a.c1 in ( list ) `然后,将列表推入易失性表是最好的出路。然而,这是通过cognos & IBM完成的,它不够聪明,不足以知道Teradata的易失性表是什么。我希望是这样,所以我可以使用排除逻辑存在来遍历易失性的表内容。因此,没有易失性表,我有一个值列表where a.c1 in ( list ),它的值类似于5K值。把这份清单保存在报告中是很昂贵的。我想知道,在把这类清单放在报告中之前,是否有可能把它放在某个地方。如果CTE和使用存在于CTE上,那会取得类似的收益吗?
发布于 2015-11-04 12:57:01
您可以将列表作为字符串传递,然后将其拆分为一个表,例如,对于一个整数列表:
where a.c1 in
(
SELECT CAST(token AS INT)
FROM TABLE (STRTOK_SPLIT_TO_TABLE(1, '1,2,3,4,5,6,7,8,9,5000', ',')
RETURNS (outkey INTEGER,
tokennum INTEGER,
token VARCHAR(10) CHARACTER SET UNICODE)
) AS dt
)当然,优化器不知道返回的行数,所以最好检查解释.
https://stackoverflow.com/questions/33521496
复制相似问题