sql - 如何删除我在 1 列中得到重复的结果
问题描述
这是我在这个网站上提出的第一个问题。希望我做对了:-)我已经搜索了类似的问题,但我能找到的只是如何删除整行相同的重复结果我尝试过 DISTINCT 和 GROUP BY 但都没有产生我想要的结果。
我的代码是:
SELECT
[ID-HNO-3] AS number,
[ST-STS-61] AS modality
FROM
[RENALPLUS].[dbo].[tbl_Change_of_Status]
WHERE
[ST-STS-61] = 'akc'
OR
[ST-STS-61] = 'neph op'
GROUP BY
[ID-HNO-3], [ST-STS-61]
ORDER BY
[number] ASC
这会产生以下结果:
column 1 | column2
__________________
1 | neph op
2 | neph op
3 | neph op
4 | neph op
5 | neph op
6 | neph op
6 | AKC
7 | neph op
8 | neph op
9 | neph op
10 | neph op
预期结果是:
column 1 | column2
__________________
1 | neph op
2 | neph op
3 | neph op
4 | neph op
5 | neph op
6 | AKC
7 | neph op
8 | neph op
9 | neph op
10 | neph op
两列都不是键。
每个结果也有一个与之关联的日期,每个日期都是唯一的,但不是关键
你会看到第 1 列有 6 个重复。
在这种情况下,我只需要返回 6 一次,其中 6 是最近的日期
有人可以解释如何做到这一点,因为我似乎无法找出它是如何完成的
谢谢您的帮助。
解决方案
您可以使用窗口函数:
SELECT [ID-HNO-3] AS number, [ST-STS-61] AS modality
FROM (SELECT cos.*,
ROW_NUMBER() OVER (PARTITION BY [ID-HNO-3] ORDER BY date DESC) as seqnum
FROM [RENALPLUS].[dbo].[tbl_Change_of_Status] cos
WHERE [ST-STS-61] IN ('akc', 'neph op')
) cos
WHERE seqnum = 1
ORDER BY [number] ASC
推荐阅读
- elasticsearch - 在弹性搜索 Kibana 中搜索找到的单词的特定范围内的特定单词
- javascript - 如何在d3.js Treemap布局中获取元素的对象属性onclick
- docker - 如何编写 dockerfile 来安装 kubeadm 和 kubectl
- android - 为 getSpans、getSpanStart、getSpanEnd 导入什么?
- c++ - 在编译时创建一个数组
- javascript - 我在 Google 应用程序脚本中运行以下脚本 - 发送 cc 和 bcc 的响应
- python-3.x - 基于依赖数据的抽样
- html - 如何将元素放在内联元素下?
- python - 在 python 中绘制多年的月度异常
- java - 如何使用 java + spring 代码实现将 MFT 服务器与暴露的 rest 连接以执行上传、下载和列出文件等操作