掩码值的联盟

问题描述 投票:0回答:1

我在合并2个具有使用随机函数掩盖的值的表时遇到问题。除非有人有权读取所有数据,否则用户应看到(-1000,2000)

之间的随机值

为每个表创建单独的视图会以正确的方式生成值,但是当我尝试将这两个表或视图合并时会出现问题。而不是看到随机值,我看到的都是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

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

但是,两个表的UNION都应显示ID和被屏蔽的值,但应显示值= 0.000000。

我有点困惑如何使这些值在并集中显示为掩码的随机值

sql-server ssms tabular
1个回答
0
投票

您可以UNION / UNION ALL选择同一张表而不会出现问题。但是,使用两个不同的表将所有掩码值设为0。

您可以将以下内容用作使用临时表的解决方法:

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

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

demo on dbfiddle.uk

© www.soinside.com 2019 - 2024. All rights reserved.