屏蔽值联合

Union of masked values

我在合并 2 个 table 时遇到问题,这些 table 的值使用随机函数进行了屏蔽。除非有人有权读取所有数据,否则用户应该看到 (-1000,2000)

之间的随机值

为每个 table 创建单独的视图以正确的方式生成值,但是当我尝试合并这 2 个 table 或视图时出现问题。我看到的不是随机值,而是所有东西都为 0

假设有 table A 定义为:

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

和tableB为:

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

在table答:

ID   Value
1     12
2     21
3     34

在table B:

ID   Value
7     17.12
8     23.01
9     2.56

每个 table 的视图显示每个 table 的 ID 和没有权限的用户的掩码值以及 table 中有权限的用户的值是正确的

但是两个 table 的 UNION 应该显示 ID 和屏蔽值,但它显示值 = 0.000000。

我对如何使这些值在联合中显示为屏蔽随机值感到困惑

您可以 UNION / UNION ALL 一个 select 相同的 table 没有问题。但是使用两个不同的 tables 对所有屏蔽值给出 0。

您可以使用以下方法作为使用临时 tables 的解决方法:

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

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

demo on dbfiddle.uk