sql - 查询以基于其他列返回具有重复值的行
问题描述
我在 SQL Server 中有一个表,格式如下:
我想根据以下条件获取行:
- 如果行有多个但相似
Customer_ID
,Order_Number
则仅返回具有最大日期的行 - 否则,返回其余行
所以这种情况下的结果将是第 3、4 和 5 行。
关于如何使用 SQL 查询来实现这一点的任何想法?该表没有主键或唯一键。
解决方案
使用窗口函数row_number()
select *
from
(
select *,
row_number() over(partition by Customer_ID,Order_Number order by date desc) as rn
from your_table
) t where rn=1
或使用 co-relates 子查询
select *
from t
where date in (
select max(date)
from t t1
where t1.Customer_ID=t.Customer_ID and t1.Order_Number=t.Order_Number
)
推荐阅读
- apache-nifi - 如果选择“执行:主节点”,处理器在 Apache NiFi 中不起作用
- javascript - Javascript 使用索引对对象进行排序
- html - BehavorSubject 的订阅者没有发现 chanfes
- python - 在 Python 中使用预主密钥计算 TLS PRF 主密钥
- java - 需要从从 influx db 获取的数据中分离或仅提取值
- c# - 在不使用 GCHandle.Alloc 的情况下将固定长度的缓冲区作为参数传递给函数
- java - 需要帮助将阴影效果应用于 java 中的 pdf 框组件
- r - R - run function to compute a new column form an existing one across each table in a list of tables
- angularjs - angular.js:14199 错误:[$compile:tpload] 无法加载模板:(HTTP 状态:404 未找到)
- django - django中的外键