在 Teradata 的 RANDOM 函数中使用列作为下限和上限

using columns as lower and upper bound in RANDOM function in Teradata

这是 Teradata 的特定问题。在 RANDOM 函数中,我希望直接从其中一列中获取下界。例如我想要一个介于订户年龄和截止日期之间的随机值。所以我想放 RANDOM(int_tenure, 0)。我收到以下错误:

"Syntax error, expected something like an integer or a decimal number or a floating point number or '+' or '-' between '(' and the word 'int_tenure'"

RANDOM 只能接受文字(没有 field/column 名称)和第一个参数,并且比第二个参数 lower/equal。所以第一步是不可能的。但您可以解决:生成一个随机因子 [0;1] 并将该因子应用于区间。

select 10 as lower_bound
      ,20 as upper_bound
--      ,random(lower_bound, upper_bound) -- will not work
      ,random(0, 1000)/1000.0000 as RND_Factor -- a random factor between 0 and 1
      ,(upper_bound-lower_bound)*RND_Factor+lower_bound;