使用分区依据的SQL查询
发布时间:2020-05-24 16:14:52 所属栏目:MsSql 来源:互联网
导读:我有以下表名称JobTitle JobID LanaguageID-----------------1 11 21 32 12 2 3 44 55 2 我正在从表格中选择所有记录,除了重复的JobID的计数 1.我只从重复的JobID中选择一个记录/第
|
我有以下表名称JobTitle JobID LanaguageID ----------------- 1 1 1 2 1 3 2 1 2 2 3 4 4 5 5 2 我正在从表格中选择所有记录,除了重复的JobID的计数> 1.我只从重复的JobID中选择一个记录/第一行. JobID LanaguageID ----------------- 1 1 2 1 3 4 4 5 5 2 我尝试过使用以下查询. with CTE_RN as
(
SELECT ROW_NUMBER() OVER(PARTITION BY JobTitle.JobID ORDER BY JobTitle.JobTitle) AS RN
FROM JobTitle
INNER JOIN JobTitle_Lang
ON JobTitle.JobTitleID = JobTitle_Lang.JobTitleID
)
但是我无法在上面的查询中使用WHERE子句. 解决方法with CTE_RN as
(
SELECT
JobID,LanaguageID,ROW_NUMBER() OVER(PARTITION BY JobTitle.JobID ORDER BY JobTitle.JobTitle) AS RN
FROM JobTitle
INNER JOIN JobTitle_Lang ON JobTitle.JobTitleID = JobTitle_Lang.JobTitleID
)
select
from CTE_RN
where RN = 1 or LanguageID = @LanguageID
更新 简化了一点(加入删除),但你会明白: declare @LanguageID int = 2
;with cte_rn as
(
select
JobID,LanguageID,row_number() over(
partition by JobTitle.JobID
order by
case when LanguageID = @LanguageID then 0 else 1 end,LanguageID
) as rn
from JobTitle
)
select *
from cte_rn
where rn = 1
sql fiddle demo (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
