sql-server-2005 - 对某些列进行区分或分组,但对其他列则不然

标签 sql-server-2005 t-sql

我认为我正在尝试在某些列上使用类似于 DISTINCT 的内容进行过滤,但在其他列上则不然。

我有这样的观点:

Name
LastName
Zip
Street1
HouseholdID (may not be unique because it may have multiple addresses -- think of it in the logical sense as grouping persons but not physical locations; If you lookup HouseholdID 4130, you may get two rows.. or more, because the person may have mutiple mailing locations)
City
State

我需要提取所有这些列,但要筛选 LastName、Zip 和 Street1。这是有趣的部分:过滤器是任意的——这意味着我不关心哪一个重复项消失了。这是用于邮寄类型的事情,其他信息除了在需要时查找特定的人之外不会用于任何其他原因(我不知道为什么)。因此..给定其中一条记录,您可以轻松找出已删除的记录。

就目前情况而言,我的 Sql-Fu 失败了,我正在 C# 中进行过滤,这非常慢,并且几乎是一个以空列表开头并在 if 中添加行的 foreach姓氏、邮政编码和街道的组合不在列表中。

我觉得我错过了我应该理解的 SQL 的简单/基本部分。

最佳答案

解决方案可以假设我们有唯一标识列:

Select Name,
       LastName,
       Zip,
       Street1,
       HouseholdID, 
       City,
       State

From View V1

INNER JOIN 
(
    Select Min([Unique Identification]) as ID
    From View v
    Group By LastName,
             Zip,
             Street ) AS T on T.ID = V1.[Unique Identification]

当 View 中没有标识符时......

Select     Name,
           LastName,
           Zip,
           Street1,
           HouseholdID, 
           City,
           State

    From  
    (
        Select Name,
               LastName,
               Zip,
               Street1,
               HouseholdID, 
               City,
               State,
               Row_Number() Over (Partition By LastName,Zip,Street Order By Street1,HouseholdID,City,State) AS RowNum
        From View v
        ) AS T 
Where T.RowNum = 1

关于sql-server-2005 - 对某些列进行区分或分组,但对其他列则不然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2560964/

相关文章:

sql - SQL Server中计算余弦相似度的优化方法

sql - SQL Server 中的字母系列生成

sql - 非常简单的 sybase sql 函数将无法工作

mysql - 混淆 "p OR q"、 "p AND q",其中 "p"等于 "false"、 "q"等于 "unknown"

SQL Server 2005 一查询计算二表

sql - T-SQL错误: Incorrect syntax near '+'

SQL 错误的百分比计算

sql-server-2005 - 安装程序无法读取 IIsMimeMap 表。错误代码为-2147023550

sql - 如何删除SQL表中的所有重复记录?

sql - 将触发器从一个数据库复制到另一个数据库