sql - 如何从具有相同值的两个不同列中选择一行
问题描述
嗨,我只需要为这张表选择一行。
第 1 行 = 反向(第 4 行)
我的代码:
select ROW_NUMBER() OVER() ID, c.localidad, acalle,bcalle
from (
SELECT a.localidad, a.calle acalle, b.calle bcalle
FROM (
SELECT LOCALIDAD, CALLE
FROM TEST.INICIAL
WHERE CALLE IS NOT NULL
GROUP BY 1,2
) A
INNER JOIN (
SELECT LOCALIDAD, CALLE
FROM TEST.INICIAL
WHERE CALLE IS NOT NULL
GROUP BY 1,2
) B ON A.LOCALIDAD = B.LOCALIDAD
WHERE SIMILARITY(A.CALLE ,B.CALLE) > 0.45
AND A.CALLE <> B.CALLE
) c
where acalle not like '%NORTE'
and acalle not like '%SUR'
and acalle not like '%ESTE'
and acalle not like '%OESTE'
AND Bcalle not like '%NORTE'
and Bcalle not like '%SUR'
and Bcalle not like '%ESTE'
and Bcalle not like '%OESTE'
AND ACALLE NOT LIKE 'PJE%'
AND BCALLE NOT LIKE 'PJE%'
and acalle not like '%BIS'
and bcalle not like '%BIS'
and acalle not like '%CALLE%'
AND BCALLE NOT LIKE '%CALLE%'
order by 1,2,3
解决方案
使用 aCASE
确保列值的顺序相同(不管它们的顺序如何,只是从一行到下一行是一致的),构建一个数组[col1, col2]
, 并以此为基础SELECT DISTINCT
。
testdb=# with orig_output as (
select 1::bigint as id, 'ADROGUE' as localidad, 'JORGE' as acalle, 'JORGE DE KAY' as bcalle UNION ALL
select 2, 'ADROGUE', 'PLAZA ESTABAN ADROGUE', 'ESTEBAN ADROGUE' UNION ALL
select 3, 'ADROGUE', 'ESTEBAN ADROGUE', 'PLAZA ESTABAN ADROGUE' UNION ALL
select 4, 'ADROGUE', 'JORGE DE KAY', 'JORGE'),
make_columns_be_in_same_order AS (
SELECT id, localidad, acalle, bcalle,
CASE WHEN acalle>bcalle
THEN ARRAY[acalle, bcalle]
ELSE ARRAY[bcalle, acalle]
END AS acalle_and_bcalle
FROM orig_output
)
SELECT DISTINCT ON (acalle_and_bcalle)
id, localidad, acalle, bcalle
FROM make_columns_be_in_same_order;
id | localidad | acalle | bcalle
----+-----------+-----------------------+-----------------
1 | ADROGUE | JORGE | JORGE DE KAY
2 | ADROGUE | PLAZA ESTABAN ADROGUE | ESTEBAN ADROGUE
(2 rows)
推荐阅读
- html - 在 Material Angular Table 中渲染 api 数据时遇到问题
- xaml - 我如何知道应用程序是否使用 Silverlight?
- react-native - React Native 中样式表中的对象
- node.js - 安装项目 reactjs 失败
- vhdl - VHDL“致命错误:HDLParsers:vhptype.c”错误
- android - 如何在 Android NDK 中包含/使用最新版本的 Opus 编解码器
- postgresql - 连续 ID 块上的 PostgresQL 窗口函数
- javascript - 如何在 HTML 表格中自定义“排序依据”?
- python - holoviz/param/panel:通过 python 回调更新 Str 或 HTML 窗格
- python - python 装饰器不接受函数的参数