SQL 将两个视图合并为一个
SQL Merge Two Views into One
我有两个视图:TableA 和 TableB,它们的信息彼此非常相似,但是有几个独特的列。
Here are my two views and their table structure
我想要最后的结果look like this
原来的列:客户 ID、发票编号、支票日期、年份和收费说明简单地相互堆叠。列:收费类型、账单金额、负债金额和总计也将相互堆叠,但当相应视图中没有值时,它默认为空(或无)。
我相信我需要做的是将一些列(名称相同的列)加入 union(?),但其余列保持原样,并且当没有值可供填充时带有空值(或者更好的是,什么都没有)。我试图将它们合并为一个 table 以便我可以使用来自我的一个数据源(而不是两个单独的数据源)的数据透视表 table。
抱歉格式不佳(我使用了图像,因为我不知道如何正确使用 |s)。
如果所有列都匹配,您可以使用 UNION ALL 到 return 2 个查询作为单个结果集。在您的情况下,您的列不完全匹配,但是您为任何列不匹配显示 null - 因此在这种情况下,您可以只显示 null 和列名。 (例如 NULL 为 'Total')
SELECT ClientID, InvoiceNumber, CheckDate, Year, ChargeDescription,
NULL as 'ChargeType', NULL as 'Total', BilledAmount, LiabilityAMount
FROM TABLEA
UNION ALL
SELECT ClientID, InvoiceNumber, CheckDate, Year, ChargeDescription,
ChargeType, Total, NULL as 'BilledAmount', NULL as 'LiabilityAmount'
FROM TABLEB
您可以创建如下视图:
create view yourview as
select clientid, [invoice number], [check date], [year], [Charge Description], Null as [Charge Type], Null as Total, [Billed Amount], [Liability Amount] from tableA
union all
select clientid, [invoice number], [check date], [year], [Charge Description],[Charge Type], Total, Null as [Billed Amount], Null as [Liability Amount] from tableB
我有两个视图:TableA 和 TableB,它们的信息彼此非常相似,但是有几个独特的列。
Here are my two views and their table structure
我想要最后的结果look like this
原来的列:客户 ID、发票编号、支票日期、年份和收费说明简单地相互堆叠。列:收费类型、账单金额、负债金额和总计也将相互堆叠,但当相应视图中没有值时,它默认为空(或无)。
我相信我需要做的是将一些列(名称相同的列)加入 union(?),但其余列保持原样,并且当没有值可供填充时带有空值(或者更好的是,什么都没有)。我试图将它们合并为一个 table 以便我可以使用来自我的一个数据源(而不是两个单独的数据源)的数据透视表 table。
抱歉格式不佳(我使用了图像,因为我不知道如何正确使用 |s)。
如果所有列都匹配,您可以使用 UNION ALL 到 return 2 个查询作为单个结果集。在您的情况下,您的列不完全匹配,但是您为任何列不匹配显示 null - 因此在这种情况下,您可以只显示 null 和列名。 (例如 NULL 为 'Total')
SELECT ClientID, InvoiceNumber, CheckDate, Year, ChargeDescription,
NULL as 'ChargeType', NULL as 'Total', BilledAmount, LiabilityAMount
FROM TABLEA
UNION ALL
SELECT ClientID, InvoiceNumber, CheckDate, Year, ChargeDescription,
ChargeType, Total, NULL as 'BilledAmount', NULL as 'LiabilityAmount'
FROM TABLEB
您可以创建如下视图:
create view yourview as
select clientid, [invoice number], [check date], [year], [Charge Description], Null as [Charge Type], Null as Total, [Billed Amount], [Liability Amount] from tableA
union all
select clientid, [invoice number], [check date], [year], [Charge Description],[Charge Type], Total, Null as [Billed Amount], Null as [Liability Amount] from tableB