我一直在从几个不同的数据库中提取数据,以创建一个汇总的信息表,这些信息都是关于特定列的共同信息。
所有表格共有3列:
年份 月 客户端
除此之外,它们是计数,总和,计算以及对客户各方面的一般查询的混合。我正在尝试绘制每个客户端的基本摘要页面。我的梦想是将所有这些都集中到一个集中的数据库中,将详细信息完整地放入表格中。然后对每个表格进行一系列观察,以便对每个表格进行总结。然后有一个汇总表/视图按年/月/客户分组所有视图。
然而,我很难把所有东西放在一起,我在表格中有原始数据,如。
Ordernumber / Lines / Client / Year / Month
视图正在执行:
订单数量/行数/客户/年/月。
然而,由于视图的变化,我不能做像UNION那样的事情。
(视图的)数据示例
View1
Year Month Count Sum ClientCode
2017 May 18 146 A
2017 May 7 110 B
2017 May 2 17 C
View2
Year Month CountOfOrders CountOfFiles SumOfLines ClientCode
2017 May 8 2 140 A
2017 May 7 6 25 B
梦想的目标是:
Year Month ClientCode Count Sum CountOfOrders CountOfFiles SumOfLines
2017 May A 18 146 8 2 140
2017 May B 7 110 7 6 25
2017 May C 2 17 0 0 0
任何建议都会很棒,我已经尝试过做UNIONALL,这样我就能做到ALL_TABLES = 2017年,月= 5月。但是我意识到UNION将无法正常工作,因为它们现在合并了行。
答案 0 :(得分:1)
你可以像表一样加入视图......似乎你想要LEFT JOIN
,COALESCE()
来处理空值:
SELECT V1.Year, V1.Month, V1.ClientCode, V1.Count, V1.Sum,
COALESCE(CountOfOrders,0) COALESCE(CountOfFiles,0) COALESCE(SumOfLines,0)
FROM View1 V1
LEFT JOIN View2 V2 ON V1.Year = V2.Year
AND V1.Month = V2.Month
AND V1.ClientCode = V2.ClientCode
唯一需要注意的是,如果View2中不存在Year/Month/ClientCode
组合,则需要更多逻辑,并且不在View1中。