sql server - SQL Query using Partition By -


i have following table name jobtitle

jobid lanaguageid ----------------- 1         1 1         2 1         3 2         1 2         2  3         4 4         5 5         2 

i selecting records table except duplicate jobid's count > 1. selecting 1 record/first row duplicate jobid's. passing languageid paramter stored procedure , want select duplicate jobid languageid along other records also. if have passed languageid 1 output should come follows

jobid lanaguageid ----------------- 1         1 2         1 3         4 4         5 5         2 

i have tried using following query.

with cte_rn (     select row_number() over(partition jobtitle.jobid order jobtitle.jobtitle) rn     jobtitle     inner join jobtitle_lang         on jobtitle.jobtitleid = jobtitle_lang.jobtitleid ) 

but unable use clause in above query. different approch should followed. or else how can modify query desired output

with cte_rn (     select         jobid, lanaguageid,         row_number() over(partition jobtitle.jobid order jobtitle.jobtitle) rn     jobtitle         inner join jobtitle_lang on jobtitle.jobtitleid = jobtitle_lang.jobtitleid ) select cte_rn rn = 1 or languageid = @languageid 

update

simplified bit (join removed), you'll idea:

declare @languageid int = 2  ;with cte_rn (     select         jobid, languageid,         row_number() over(           partition jobtitle.jobid           order               case when languageid = @languageid 0 else 1 end,                languageid         ) rn     jobtitle ) select * cte_rn rn = 1 

sql fiddle demo


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

c++ - Clear the memory after returning a vector in a function -

erlang - Saving a digraph to mnesia is hindered because of its side-effects -