sql - 仅选择具有相同值的记录
问题描述
我正在处理将成为视图一部分的 SQL 语句。我需要的是只提取两次具有相同唯一键的记录。查询现在如下所示。
select distinct
rscmaster_no_in, rsc_no_in, calendar_year, calendar_month,
Wstat_Abrv_Ch,
h.Wstat_no_in, Staffing_Calendar_Date, payhours,
l.OTStatus
from
vw_all_ts_hire h
left join
MCFRS_OTStatus_Lookup l on l.wstat_no_in = h.Wstat_no_in
where
rscmaster_no_in in (select rscmaster_no_in from vw_rsc_ECC_splty)
and Wstat_Abrv_Ch <> ''
and h.Wstat_no_in in (103, 107)
and l.OTStatus in ('ECCOTRemove', 'ECCOTSignup')
and Staffing_Calendar_Date = '2020-11-01' -- only for the testing purposes. Will be removed later.
order by
RscMaster_no_in
我从上面的查询中得到的结果是:
我需要修改 SQL 语句,使最终结果如下所示:
如何修改上述语句以吐出这样的最终结果?
解决方案
使用解析count(*) over ()
函数。
with cte as (
select
count(*) over (partition by YourUniqueKey) as MyRowCount
{rest of your query}
)
select *
from cte
where MyRowCount = 2;
推荐阅读
- android - 为什么在尝试获取用户信息时 findViewById 返回 null?
- cocoa - 如何实现从照片到我的 Cocoa 应用程序的高质量拖放?
- c# - 找到第一个空闲的 id
- mysql - Mysql 80 客户端设置
- javascript - React ErrorBoundary - 只是无法让它工作
- matlab - 为什么失真图像的PSNR更大?
- sql - 两个表的全部联合,然后用内部连接嵌套
- apache-spark - Spark saveAsTextFile 没有按预期工作,请参考下面的代码
- javascript - 像真实用户一样以编程方式填写密码字段
- c# - 退货清单