首页 > 解决方案 > Postgres查询具有不同列值的行的结果

问题描述

我在同一个表中有几行数据,这些数据行由一个名为 kitdata 的列区分,该列是一个人名。所有其他列都有各种数据。但是,如果名为“resultid”(一个数字)的列在每个人的 kitdata 名称中具有相同的值,我需要从输出结果中消除这些行。因此,如果 Kevin & Terri 在其对应行中具有相同的 resultid 编号,则数据不会显示在结果中。名为 kevin 的套件数据是主要套件。我需要从我的结果中消除“terri”中的重复数据。

许多变化。包括 !=1

SELECT
  fulln, scm, kitname, sum (resultid)
FROM ftdnamc WHERE kitname !='terri'
GROUP BY
  fulln, scm, kitname
HAVING
  sum (resultid) != 0

预期结果将是与 kevin 和 terri kitdata 相比具有相同 resultid 的数据被消除。

标签: sqlpostgresqlsumdistinct

解决方案


NOT EXISTS当列中有另一行具有相同值时,将消除任何行resultid

SELECT
  fulln, scm, kitname, resultid
FROM ftdnamc f
WHERE NOT EXISTS (
    SELECT 1 FROM ftdnamc WHERE kitname <> f.kitname AND resultid = f.resultid
)

如果需要SUM列 resultid:

SELECT
  fulln, scm, kitname, SUM(resultid)
FROM ftdnamc f
WHERE NOT EXISTS (
    SELECT 1 FROM ftdnamc WHERE kitname <> f.kitname AND resultid = f.resultid
)
GROUP BY fulln, scm, kitname

推荐阅读