繁体   English   中英

T SQL:内联子选择查询?

[英]T SQL: Inner join in sub select query?

我是WPF开发人员,而不是sql dba ...试图在子选择中进行联接。 我有两个表:tbArticles和tbRegions。 TbArticles包含一个对tbRegions通用的regionCode列。 我正在尝试按地区和国家/地区统计所有文章:

在此处输入图片说明

在此处输入图片说明

这是我要寻找的结果:

在此处输入图片说明

我设法通过内部联接按地区划分了国家:

select distinct r.longName, a.Country
from ises.tbarticles a
INNER JOIN ref.tbRegions r
On a.RegionCode = r.regionCode
order by longName

但是,如何将联接作为子选择获得所需的结果? 我已经尝试过这种方法,但是显然这是不对的。

select (select distinct r.longName from ises.tbarticles a
INNER JOIN ref.tbRegions r
on r.regionCode = a.RegionCode) as 'Region', country, COUNT(*) as 'Total Articles' from ises.tbarticles a, ref.tbRegions r
group by country
order by Region

尝试这个:

select r.longName, a.Country, count(*)
from ises.tbarticles a
INNER JOIN ref.tbRegions r
On a.RegionCode = r.regionCode
group by  r.longName, a.Country
order by longName

使用需要先使用GROUP BY子句 ,然后再进行计数

Select r.longName, a.Country, Count(a.*) as ArticleCount
From ises.tbarticles a 
     INNER JOIN ref.tbRegions r On a.RegionCode = r.regionCode
Group By r.longName, a.Country

尝试这个:

DECLARE @TbArticles TABLE(regionCode INT, Coutry NVARCHAR(MAX), Body NVARCHAR(MAX))
DECLARE @TbRegions TABLE(regionCode INT, Name NVARCHAR(MAX))

INSERT INTO @TbArticles VALUES
(10, N'Australia', 'blah'),
(10, N'Fiji', 'blah'),
(12, N'USA', 'blah'),
(15, N'Belgium', 'blah')


INSERT INTO @TbRegions VALUES
(10, N'Australia'),
(12, N'North America'),
(15, N'Western Europe')



SELECT r.Name, a.Coutry, COUNT(*) AS ArticleCount FROM @TbArticles a
JOIN @TbRegions r ON r.regionCode = a.regionCode
GROUP BY r.regionCode, r.Name, a.Coutry

输出:

Name            Coutry      ArticleCount
Australia       Australia   1
Australia       Fiji        1
North America   USA         1
Western Europe  Belgium     1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM