2017-04-04 28 views
0

我有3个包含数据的表,我需要在2014财年(FiscalYear)中选择每个国家(CountryRegionName)的销售额总额(SalesAmount)。SQL:如何从3个表格构建复杂查询

第一张表是Geography

有与CountryRegionNameSalesTerritoryKey(数字,这意味着CountryRegionName一些地区)的数据。

第二个表anong others有关于OrderDateKey,SalesTerritoryKeySalesAmount的信息。 OrderDateKey字段包括以下格式的记录:“20130828”。

第三个表,除其他外,具有从第二表和FiscalYear(如格式字段DateKey(以相同的格式OrderDateKey:“2012”)

我dont't明白如何可以选择所需要的数据。

`SELECT CountryRegionName, SUM(SalesAmount) FROM FirstTable GROUP BY SalesTerritoryKey` 
:使用所有3个表,因为第二个表有大约在第三个表支持在实地 FiscalYear不同格式年( OrderDateKey)信息

目前我下面的语句停止其

我知道我们需要加入所有表格并进行一些子查询,但不知道如何比较不同格式的日期和国家。 感谢您的帮助!

+0

不要描述表格。粘贴代码以创建表格并填充示例数据。 – dfundako

+0

或者至少在你的问题中发布一个格式化的表格来演示它。 – SandPiper

回答

0
SELECT t1.CountryRegionName, SUM(t2.SalesAmount) 
FROM ThirdTable t3 
LEFT JOIN SecondTable t2 
ON t3.DateKey = t2.OrderDateKey 
LEFT JOIN FirstTable t1 
ON t1.SalesTerritoryKey = t2.SalesTerritoryKey 
WHERE t3.FiscalYear = "2014" 
GROUP BY t1.CountryRegionName 
+0

为什么使用LEFT JOIN而不是INNER JOIN? –

+0

,因为如果你在表格3中有2014财年,但在其他人中没有数据,你仍然会得到空的结果。但如果你设置内部连接 ​​- 你将不会得到任何结果 – Alex

+0

我认为这个查询会首先连接所有的数据,并且只有在FiscalYear过滤之后,所以不会有这个问题? –