【发布时间】:2021-04-26 12:14:24
【问题描述】:
假设我们有如下 3 个表:
Table1:Column1、Column2、Column3
Table2:Column1、Column2、Columnxyz、Column3
Table3:Column1、Column2、Column3
我对以下 DDL 有看法:
CREATE VIEW [dbo].[View1]
AS (
SELECT 'Table1' as [Source], * FROM [Table1]
UNION
SELECT 'Table2' as [Source], * FROM [Table2]
UNION
SELECT 'Table3' as [Source], * FROM [Table3]
);
假设所有表都具有相同的列,该视图可以完美运行。
但是,在上面的示例中,table2 具有附加列:columnxyz 我需要在视图联合中进行哪些更改? 换句话说,我是否也必须使用这个附加列创建 Table1 和 Table3,或者我们可以通过以某种方式动态地将视图中的这个额外列附加到缺少它的其他表并用“None”或“N”填充它来规避这个问题/A" 作为默认数据(因为 Table1 和 table2 最初没有这个 columnxyz 所以真的没有数据)?
【问题讨论】:
-
@DaleK 所说的,或者不选择该列,只选择常用列。你可能想要
union all而不是union -
@DaleK 我看到这样:
SELECT 'Table1' as [Source], [columnxyz] * FROM [Table1]bt 你是什么意思我应该单独列出所有列?是因为订单吗? -
@Charlieface 事情是我们需要 columnxyz,因为它将被馈送到 SSAS 多维数据集(View1 将充当数据源)
-
@DaleK 是的,我想我知道你的意思,但是对于那个问题,我只记得重新创建视图
-
@DaleK 也许我实际上必须在这里做,因为 columnxy 无论如何都要按特定顺序(例如第 3 列)
标签: sql sql-server tsql