如何使用SQL对两个表中的条件数据进行内部联接

如何使用SQL对两个表中的条件数据进行内部联接,sql,sql-server,azure,Sql,Sql Server,Azure,我有两张桌子 一个包含一个列ENTITYID和一个表示作业是否为全职的列(1为全职) 另一个表包含匹配的ID和一列,说明这些作业基于哪个国家 我的任务是在表1中找到所有全职工作,然后利用这些信息从表2中找到他们所在的国家。但对于第二部分,它需要计算每个国家的就业人数。即10个日本、5个美国、2个英国。不是日本,日本,日本等等 到目前为止,我所拥有的: SELECT entityid FROM dbo.Jobs WHERE contracthours = 1; 这将返回所有全职作业id(enti

我有两张桌子

一个包含一个列ENTITYID和一个表示作业是否为全职的列(1为全职)

另一个表包含匹配的ID和一列,说明这些作业基于哪个国家

我的任务是在表1中找到所有全职工作,然后利用这些信息从表2中找到他们所在的国家。但对于第二部分,它需要计算每个国家的就业人数。即10个日本、5个美国、2个英国。不是日本,日本,日本等等

到目前为止,我所拥有的:

SELECT entityid FROM dbo.Jobs WHERE contracthours = 1;
这将返回所有全职作业id(entityid)(=1)。但是我现在如何获取这些数据并使用它们在第二个表中找到它们呢

在表2中:

SELECT COUNT(ID), ISNULL(country, 'No Country')
FROM dbo.JobLocations
GROUP BY Country;
这将返回包含每个作业计数的作业,并将没有关联国家/地区的作业替换为“无国家/地区”(我的任务要求的一部分)

我需要做的是从表1上的第一个查询中获取我所拥有的,并以某种方式内部联接它,并返回与表2上使用的第二个查询类似的结果

编辑:我应该注意表1中的ENTITYID等于表2中的JOBID

一些视觉效果,第一张图显示了表1 ID和合同工时(1为全职),第二张图显示了表2 ID和相关国家/地区


如果我理解正确,您可以尝试将
count
与窗口函数get count一起使用,然后在
ENTITYID
JOBID
上执行
join

SELECT * 
FROM dbo.Jobs t1 inner join (
    SELECT JOBID,
            COUNT(ID) over(partition by Country order by Country) cnt, 
            ISNULL(country, 'No Country') country
    FROM dbo.JobLocations
) t2 on t2.JOBID = t1.entityid
WHERE t1.contracthours = 1;

如果我理解正确,您可以尝试将
count
与窗口函数get count一起使用,然后在
ENTITYID
JOBID
上执行
join

SELECT * 
FROM dbo.Jobs t1 inner join (
    SELECT JOBID,
            COUNT(ID) over(partition by Country order by Country) cnt, 
            ISNULL(country, 'No Country') country
    FROM dbo.JobLocations
) t2 on t2.JOBID = t1.entityid
WHERE t1.contracthours = 1;

你能提供一些样本数据和预期结果吗?你能提供一些样本数据和预期结果吗?是的,差不多了,我想从表1(其中contracthours=1)中找到所有全职工作。然后我想在第二个表中找到这些工作,只返回两列,一列带有国家名称(或“No name”),另一列显示该国家全职工作的数量。是的,差不多了,我想从表1中找到所有全职工作(其中contracthours=1)。然后我想在第二个表中找到这些工作,只返回两列,一列带有国家名称(或“无名称”),另一列显示该国家的全职工作数量。您就是一个图例。我还在学习SQL,所以所有的概念对我来说都是全新的。但这正是我需要做的。你是一个传奇。我还在学习SQL,所以所有的概念对我来说都是全新的。但这正是我需要做的。