Joh*_*ohn 3 t-sql sql-server-2008
我需要构建一个查询来解决下面的这种情况:
ParentTable:
ParentId Name
1 Parent A
2 Parent B
Run Code Online (Sandbox Code Playgroud)
ChildTable:
ChildId ParentId Name
10 1 Child X
11 1 Child Y
12 1 Child Z
13 2 Child Q
Run Code Online (Sandbox Code Playgroud)
单个父母可以链接到多个孩子的地方.然后查询将给出以下结果:
Parent Name 1st-Child 2nd-Child 3rd-Child 4th-Child 5th-Child
Parent A Child X Child Y Child Z
Parent B Child Q
Run Code Online (Sandbox Code Playgroud)
这在MS SQL 2008中是否可行?
假设您只需要列出5个孩子,此查询将起作用:
with T as (
select P.Name as ParentName,
C.Name as ChildName,
row_number() over (partition by P.ParentId order by C.ChildId) as N
from ParentTable P join ChildTable C on P.ParentId = C.ParentId
)
select ParentName,
max(case when N = 1 then ChildName else '' end) as '1st-child',
max(case when N = 2 then ChildName else '' end) as '2nd-child',
max(case when N = 3 then ChildName else '' end) as '3rd-child',
max(case when N = 4 then ChildName else '' end) as '4th-child',
max(case when N = 5 then ChildName else '' end) as '5th-child'
from T
group by ParentName
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2202 次 |
| 最近记录: |