Sql 将两个select语句的结果合并在一起
我有下面的模式,我只是停留在一个特定的部分Sql 将两个select语句的结果合并在一起,sql,sql-server,inner-join,Sql,Sql Server,Inner Join,我有下面的模式,我只是停留在一个特定的部分 CREATE TABLE Suppliers (ID INT, Name VARCHAR(128), Postcode VARCHAR(10)); CREATE TABLE Branches (ID INT, Name VARCHAR(128), Postcode VARCHAR(10)); CREATE TABLE Postcode_States (ID INT, State VARCHAR(128), Postcode VARCHAR(10))
CREATE TABLE Suppliers (ID INT, Name VARCHAR(128), Postcode VARCHAR(10));
CREATE TABLE Branches (ID INT, Name VARCHAR(128), Postcode VARCHAR(10));
CREATE TABLE Postcode_States (ID INT, State VARCHAR(128), Postcode VARCHAR(10));
SELECT S.Name AS SupplierName, PS.State AS SupplierState
FROM Suppliers AS S
LEFT JOIN Postcode_States PS ON S.Postcode = PS.Postcode;
SELECT B.Name AS BranchName, PS.State AS BranchCounty
FROM Branches AS B
LEFT JOIN Postcode_States PS ON B.Postcode = PS.Postcode;
我有三个表,供应商,分支机构和邮政编码。我在一个查询中选择了所有供应商及其州的邮政编码,在另一个查询中选择了所有分行及其州的邮政编码。有谁能给我一些指导,告诉我如何将这两个查询结合起来,以便返回所有状态相同的供应商和分支机构?谢谢
示例数据和请求的查询输出
您可以加入:
select s.name, b.name, p.state
from suppliers s
inner join branches b on b.postcode = s.postcode
inner join postcodes p on p.postcode = s.postcode
您可以加入:
select s.name, b.name, p.state
from suppliers s
inner join branches b on b.postcode = s.postcode
inner join postcodes p on p.postcode = s.postcode
如果希望状态包含多个供应商,可以使用窗口功能:
select s.*
from (select s.name, b.name, p.state,
count(*) over (partition by state) as cnt
from suppliers s join
branches b
on b.postcode = s.postcode join
postcodes p
on p.postcode = s.postcode
) s
where cnt >= 2
order by cnt desc, state;
这不会返回Texas,但您的问题表明您需要重复的。如果您想要有多个供应商的州,您可以使用窗口功能:
select s.*
from (select s.name, b.name, p.state,
count(*) over (partition by state) as cnt
from suppliers s join
branches b
on b.postcode = s.postcode join
postcodes p
on p.postcode = s.postcode
) s
where cnt >= 2
order by cnt desc, state;
这不会返回Texas,但您的问题表明您需要重复的数据。示例数据预期输出将在此处有用,与什么相同?您正在返回所有供应商。我想返回一行,其中包含供应商名称和分支机构名称,其中状态为same@user1501171 . . . 德克萨斯州与什么州相同?样本数据预期输出在这里有用与什么州相同?您正在返回所有供应商。我想返回一行,其中包含供应商名称和分支机构名称,其中状态为same@user1501171 . . . 德克萨斯州和哪个州是同一个州?