Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将两个select语句的结果合并在一起_Sql_Sql Server_Inner Join - Fatal编程技术网

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 . . . 德克萨斯州和哪个州是同一个州?