sql - SQL - 当结果在 2 个字段上重复时,删除所有
问题描述
当我运行这个查询
SELECT
DT.CONTRACT_NUMBER,
DT.ROLE,
DT.TAX_ID,
DT.EFFECTIVE_DATE
FROM DATA_TABLE DT
我得到这个结果。
我想删除每个合同的 TAX ID 出现多次的结果。
即这个结果会消失。如果他们有 3 个结果,他们就会消失。
解决方案
我认为窗口函数可能是要走的路:
SELECT DT.CONTRACT_NUMBER, DT.ROLE, DT.TAX_ID, DT.EFFECTIVE_DATE
FROM (SELECT DT.CONTRACT_NUMBER, DT.ROLE, DT.TAX_ID, DT.EFFECTIVE_DATE,
COUNT(*) OVER (PARTITION BY TAX_ID) as cnt
FROM DATA_TABLE DT
WHERE DT.CONTRACT_NUMBER = '551000280'
) DT
WHERE CNT = 1;
如果您确实想为每个税号保留一行,请使用row_number()
而不是count(*)
.
推荐阅读
- android - API 返回 JSONObjects 而不是 Retrofit + Android 上的数组
- javascript - 防止浏览器缓存没有 Node.js 依赖的 javascript/css
- python - Python 统计模块返回的标准差与计算的不同
- python - 用频率计数绘制概率密度函数
- c# - 在 win10 应用中的当前用户屏幕上绘制一个 100x100 的持久矩形
- java - 检查一个字符串是双倍的,而不会因 NumberFormatException 而失败
- matrix - Sumifs 在具有一个行条件和两个列条件的矩阵中
- angular - 模块解析失败:“导入”和“导出”可能只出现在顶层
- python - pandas:从日期开始计算一年内出现的次数,按主题分组
- sql - 查找每行给定时间之前的最后一个事件