gpt4 book ai didi

SQL 查询为列中的每个唯一值返回一条记录

转载 作者:行者123 更新时间:2023-12-04 05:27:50 24 4
gpt4 key购买 nike

我在 SQL Server 2000 中有一个表,我试图以特定方式查询它。展示这一点的最佳方式是使用示例数据。

看哪,[Addresses] :

Name         Street                 City          State
--------------------------------------------------------
Bob 123 Fake Street Peoria IL
Bob 234 Other Street Fargo ND
Jim 345 Main Street St Louis MO

这实际上是实际表结构的简化示例。表的结构完全超出我的控制。我需要一个查询,该查询将为每个名称返回一个地址。哪个地址并不重要,只是只有一个。结果可能是这样的:
Name         Street                 City          State
--------------------------------------------------------
Bob 123 Fake Street Peoria IL
Jim 345 Main Street St Louis MO

我发现了一个类似的问题 here ,但在我的案例中给出的解决方案均无效,因为我无权访问 CROSS APPLY ,并调用 MIN()在每一列上会将不同的地址混合在一起,虽然我不在乎返回哪条记录,但它必须是一个完整的行,而不是不同行的混合。

更改表结构的建议对我没有帮助。我同意这张表很糟糕(比这里显示的更糟)但这是我无法更改的主要 ERP 数据库的一部分。

该表中大约有 3000 条记录。没有主键。

有任何想法吗?

最佳答案

好吧,这会给你带来非常糟糕的表现,但我认为它会起作用

SELECT t.Name, t.Street, t.City, t.State
FROM table t
INNER JOIN (
SELECT m.Name, MIN(m.Street + ';' + m.City + ';' + m.State) AS comb
FROM table m
GROUP BY m.Name
) x
ON x.Name = t.Name
AND x.comb = t.Street + ';' + t.City + ';' + t.State

关于SQL 查询为列中的每个唯一值返回一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/982932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com