использование столбцов в качестве нижней и верхней границы в случайной функции в Teradata - PullRequest
0 голосов
/ 03 апреля 2020

Это вопрос Teradata c. В случайной функции я хочу, чтобы нижняя граница была взята непосредственно из одного из столбцов. например, я хочу случайное значение между возрастом подписчика и до даты. Поэтому я хочу поставить RANDOM (int_tenure, 0). Я получаю сообщение об ошибке ниже:

"Синтаксическая ошибка, ожидается что-то вроде целого числа или десятичного числа или числа с плавающей запятой или" + "или" - "между" ("и словом" int_tenure ""

1 Ответ

0 голосов
/ 03 апреля 2020

СЛУЧАЙ может принимать только литералы (без имен полей / столбцов) и первый параметр и быть ниже / равен второму. Так что на первом этапе это невозможно. Но вы можете обойти это: сгенерируйте случайный коэффициент [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;
...