Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 server 使用SQL查找类似记录_Sql Server_Tsql - Fatal编程技术网

Sql server 使用SQL查找类似记录

Sql server 使用SQL查找类似记录,sql-server,tsql,Sql Server,Tsql,我有一个SQL Server 2008数据库,有两个表。这些表是地址和存储。这些表格定义为: Address -------- ID (int) Line1 (nvarchar(255)) PostalCode (nvarchar(5)) City (nvarchar(255)) State (nvarchar(255)) Store ----- ID (int) LocationID (int) Name 我试图通过Line1和PostalCode查找位于同一地址的商店列表。由于重复记录,

我有一个SQL Server 2008数据库,有两个表。这些表是地址和存储。这些表格定义为:

Address
--------
ID (int)
Line1 (nvarchar(255))
PostalCode (nvarchar(5))
City (nvarchar(255))
State (nvarchar(255))

Store
-----
ID (int)
LocationID (int)
Name
我试图通过Line1和PostalCode查找位于同一地址的商店列表。由于重复记录,我需要忽略ID。我不在乎商店是他们所在地唯一的商店。相反,我只想要一个共享位置的商店列表。不幸的是,我不知道该怎么做

如何编写一个查询,该查询将只返回在同一行1和PostalCode上的组地址记录

谢谢大家!

这就是你想要的吗

select s.ID, s.LocationID, s.Name, a.ID, a.Line1, a.PostalCode
from (
    select Line1 + ', ' + PostalCode as Line1PostalCode
    from Address a
    inner join Store s on a.ID = s.LocationID
    group by Line1+ ', ' + PostalCode
    having count(*) > 1
) ag
inner join Address a on ag.Line1PostalCode = a.Line1+ ', ' + a.PostalCode
inner join Store s on a.ID = s.LocationID
SELECT t1.*, s.* FROM
(SELECT Line1 ,PostalCode
FROM Address
GROUP BY Line1 ,PostalCode
HAVING COUNT(*) >1) t2
JOIN Address t1 ON t2.Line1  = t2.Line1 
AND t1.PostalCode = t2.PostalCode
JOIN  Store s on t1.ID = s.LocationID
这是你想要的吗

SELECT t1.*, s.* FROM
(SELECT Line1 ,PostalCode
FROM Address
GROUP BY Line1 ,PostalCode
HAVING COUNT(*) >1) t2
JOIN Address t1 ON t2.Line1  = t2.Line1 
AND t1.PostalCode = t2.PostalCode
JOIN  Store s on t1.ID = s.LocationID

此查询使用子查询查找具有多个存储的所有地址,然后将其用作选择要显示的存储的基础

WITH StoreAddress AS 
(
 SELECT * FROM Store s INNER JOIN Address a ON s.LocationID=a.LocationID
)
SELECT sa.* FROM StoreAddress sa INNER JOIN 
   (SELECT Line1, PostCode FROM StoreAddress
   GROUP BY Line1, PostCode
   HAVING Count(ID)>1) pairs 
ON pairs.Line1=sa.Line1 AND pairs.PostCode=sa.PostCode
ORDER BY sa.Line1, sa.PostCode

查询按第1行和邮政编码排序,以便同一位置的门店一起显示。

此查询使用子查询查找具有多个门店的所有地址,然后将其用作选择要显示的门店的基础

WITH StoreAddress AS 
(
 SELECT * FROM Store s INNER JOIN Address a ON s.LocationID=a.LocationID
)
SELECT sa.* FROM StoreAddress sa INNER JOIN 
   (SELECT Line1, PostCode FROM StoreAddress
   GROUP BY Line1, PostCode
   HAVING Count(ID)>1) pairs 
ON pairs.Line1=sa.Line1 AND pairs.PostCode=sa.PostCode
ORDER BY sa.Line1, sa.PostCode

查询按第1行和邮政编码排序,以便将同一位置的商店显示在一起。

!我总是忘了有什么特点。谢谢你,吃了!我总是忘了有什么特点。非常感谢。