gpt4 book ai didi

使用分区依据的 SQL 查询

转载 作者:行者123 更新时间:2023-12-02 12:16:03 26 4
gpt4 key购买 nike

我有以下表名称 JobTitle

JobID LanaguageID
-----------------
1 1
1 2
1 3
2 1
2 2
3 4
4 5
5 2

我正在从表中选择除重复 JobID 之外的所有记录,其中计数 > 1。我仅从重复 JobID 中选择一个记录/第一行。现在,我将 LanguageID 作为参数传递给存储过程,并且我想为该 languageID 以及其他记录选择重复的 JobID。如果我将 languageID 传递为 1,则输出应如下所示

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

关于使用分区依据的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18987727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com