gpt4 book ai didi

sql - 将多条记录合并为一条记录

转载 作者:行者123 更新时间:2023-11-29 13:22:02 24 4
gpt4 key购买 nike

我有以下查询为单个 ID 生成多条记录。我想弄清楚如何将这些多条记录合并为一条记录:

SELECT DISTINCT id, gender, dateofbirth, city, state, zip
FROM t

这可能会给我以下结果集:

1, M, 2000-01-01, dallas, tx, 12345
1, M, 2000-01-01, NULL, NULL, NULL

我想要的是单条记录:

1, M, 2000-01-01, dallas, tx, 12345

当第二行有不同的数据时,会出现类似的情况:

1, M, 2000-01-01, dallas, tx, 12345
1, M, 2000-01-01, houston, tx, 67890

在这种情况下,我只想选择其中一条记录而忽略另一条记录,以便每个 id 只有一条记录。

有没有办法在 PostgreSQL 中做到这一点?我试过 coalesce 无济于事,想知道是否有某种方法可以解决这个问题。

最佳答案

下面的查询似乎有效,至少对于您的示例数据而言。请查看下面的 Fiddle 以获取演示。我使用 MySQL,因为 Fiddle 往往会破坏任何其他数据库类型。

SELECT t1.*
FROM yourTable t1
INNER JOIN
(
SELECT id, MAX(city || ', ' || state || ', ' || zip) AS location
FROM yourTable
GROUP BY id
) t2
ON t1.id = t2.id AND
t1.city || ', ' || t1.state || ', ' || t1.zip = t2.location

SQLFiddle

我使用的技巧是将城市、州和 zip 连接成一个字符串,然后为一组 id 值选择最大值。假设不可能以某种方式从两个不同的地址形成相同的字符串,这将起作用。我认为这适用于您的美国地址格式。

关于sql - 将多条记录合并为一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40053000/

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