我正在研究一个SQL项目,但是在从数据库中检索数据时发现了一个问题。您可以在以下屏幕截图中看到四个表:
所以我的查询是关于计算表transac_EUR_M10_17
和transac_EUR_M09_17
中单位的总和。
我尝试了以下SQL Server查询,但结果为false:
SELECT cntry.cod_country
, rg.nom_region
, SUM(tr.unite) as [sum units M09]
, SUM(tr1.unite) as [sum units M10]
FROM [Backup].[dbo].[transac_EUR_M09_17] as tr
INNER JOIN [Backup].[dbo].[COUNTRY] as cntry ON tr.[cod_country] = cntry.[cod_country]
INNER JOIN [Backup].[dbo].Region as rg ON rg.[cod_country] = cntry.[cod_country]
INNER JOIN [Backup].[dbo].[transac_EUR_M10_17] AS tr1 ON tr1.[cod_country] = cntry.[cod_country]
where tr.cod_region = rg.cod_region
AND tr1.cod_region = rg.cod_region
Group BY cntry.cod_country
, rg.nom_region
ORDER BY SUM(tr.unite)
, SUM(tr1.unite) DESC
您对如何使用一个永久表连接两个表有什么建议吗?
答案 0 :(得分:0)
查看你的数据图,我会稍微改变一下我的代码,以确保我得到所需的结果。
首先按国家和地区加入2个主要表格 然后使用country和region表进行过滤,省略任何where子句,因为你在join子句中包含了所有条件。
喜欢这样
> ID<-1:4
> Names<-c('name1','name2','name3','name4')
> Comments<-c("I think this video \n is great", "No it stinks \n I mean it", "Use the Force", "It's time \n to get to work")
> table<-cbind(ID, Names, Comments)
> fixed_table<-apply(X=table,MARGIN=c(1,2),FUN = function(y) gsub("[\r\n]","",y))
这仍然可能无法产生您想要的效果,但根据您的结果,它应该正确加入您的表格。
答案 1 :(得分:0)
除非cod_country是唯一列,否则这些连接必然会导致重复的列。
如果你在09_17中有2行具有相同的国家/地区,并且在10_17中有相同的内容,它将复制第一个表中的两行以复制,从而弄乱你的总和。
编辑:这同样适用于您加入的任何其他表格