Let I have tables as
What I want to do is to select data like
OUTPUT{ID,FirstName,LastName,SkillONE,SkillOneExp,SkillTwo,SkillTwoExp,SkillThree,SkillThreeExp}
here SkillOne will show most experienced skill (like java, C++), SkillOneExp is the year of exp of that skill and so on. Will show only 3 like this. For each employee there will be only one row.
I tried as
select
e.ID
,e.FirstName
,e.LastName
,es.experience
,CAST
(
CASE
WHEN tf.rownumber = 1
THEN tf.skill_description
END
AS varchar(50)
)as SKILLONE
,CAST
(
CASE
WHEN tf.rownumber = 1
THEN tf.experience
END
AS varchar(50)
)as SKILLONE_EXP
,CAST
(
CASE
WHEN tf.rownumber = 2
THEN tf.skill_description
END
AS varchar(50)
)as SKILTWO
,CAST
(
CASE
WHEN tf.rownumber = 2
THEN tf.experience
END
AS varchar(50)
)as SKILLTWO_EXP
from
Employee e
JOIN
EmployeeSkill es
on es.ID=e.ID
JOIN
skills s
on s.skill_ID=es.skill_ID
JOIN
(
select * from
(
(select
ROW_NUMBER() OVER (ORDER BY es2.experience ASC) AS rownumber,
es2.ID
,es2.skill_ID
,es2.experience
,s2.skill_description
from
EmployeeSkill es2
JOIN
skills s2
on
s2.skill_ID=es2.skill_ID
)
) as tf2
)as tf
on tf.id= e.id
By using this I am not getting proper result. I am using MS SQL 2012.