Союз замаскированных значений - PullRequest
0 голосов
/ 04 марта 2020

У меня проблема с объединением двух таблиц, значения которых маскируются с помощью случайной функции. Если у кого-то нет разрешения на чтение всех данных, пользователь должен видеть случайные значения в диапазоне (-1000,2000)

, при этом отдельные представления для каждой таблицы генерируют значения правильным образом, однако возникает проблема, когда я пытаюсь создать объединение из этих 2 таблиц или представлений. Вместо того, чтобы видеть случайные значения, я вижу 0 для всего

Допустим, есть таблица A, определенная как:

ID      INT       IDENTITY (1, 1) NOT NULL,
Value   MONEY     MASKED WITH (FUNCTION = 'random(-1000, 20000)') NOT NULL

и таблица B как:

ID      INT       IDENTITY (1, 1) NOT NULL,
Value   DECIMAL   (18, 6) MASKED WITH (FUNCTION = 'random(-1000.000000, 20000.000000)') NULL

в таблице A :

ID   Value
1     12
2     21
3     34

в таблице B:

ID   Value
7     17.12
8     23.01
9     2.56

представление для каждой из таблиц показывает идентификаторы каждой таблицы и маскированные значения для пользователя без разрешений и значения, как в таблице для пользователей с разрешениями, которые является правильным

однако UNION обеих таблиц должен показывать идентификаторы и маскированные значения, но вместо этого он показывает значения = 0,000000.

Я не совсем понимаю, как сделать так, чтобы эти значения отображались как маскированные случайные значения в союз

1 Ответ

0 голосов
/ 04 марта 2020

Вы можете UNION / UNION ALL выбрать одну и ту же таблицу без проблем. Но использование двух разных таблиц дает 0 для всех маскируемых значений.

В качестве временного решения можно использовать следующие временные таблицы:

SELECT * INTO #t1 FROM TableA
SELECT * INTO #t2 FROM TableB

SELECT * FROM #t1
UNION ALL
SELECT * FROM #t2

demo на dbfiddle.uk

...