sql - 如何在不排除有效空值的情况下排除空重复项 - SQL Server
问题描述
我正在使用 SQL Server 并试图提取某些数据。但是,某些行会弹出重复的订单 #,其中一行 # 为空,而另一行具有正确的值。
棘手的是,还有其他行#s 为空,如果我要进行过滤,line_id is not null
那么我将排除所有具有空值的有效订单#s。我会使用案例陈述吗?子查询?我不知所措。
这是我的代码的精简版,我的意思是:
select
order_number
line_number
from table_1
解决方案
与NOT EXISTS
:
select t.*
from tablename t
where t.line_number is not null
or not exists (
select 1 from tablename
where order_number = t.order_number and line_number is not null
)
或带有ROW_NUMBER()
窗口功能:
select t.order_number, t.line_number
from (
select *,
row_number() over (partition by order_number order by case when order_number is not null then 1 else 2 end) rn
from tablename
) t
where t.rn = 1
推荐阅读
- acumatica - 将明细行总计字段添加到屏幕
- python - 使用 resample() 和 apply() 仅填充特定日期范围内的连续期间...知道吗?
- python - 计算具有一定数量的 NaN 可接受的连续值
- javascript - 在异步函数的多个变量中存储 Promise
- ruby - 如何从logstash中的嵌套对象中删除点
- jmeter - 如何在拆线线程中使用 Bean shell 采样器在 JMeter 中创建 HTML 报告?
- python - 如何删除 Seaborn facetgrid 中的重复轴标签?
- flutter - 当我在 firestore 中的 updateData 比 updateData 功能不起作用时?
- php - 仅当我通过 cli 手动执行时,PHP cron 作业才会执行
- c++ - Instance 方法是如何存储在内存中的?