Select 多列加入 SQL 服务器

Select Multiple Columns join SQL Server

我有一个 Employee table 这样的

第二个 table 用于 EmployeeComments,使用 EmployeeID 作为外键:

我想查询员工的评论,格式如下:

select Name, Comment 
from Employee emp 
left join EmployeeComments empC on empC.EmployeeID = emp.ID

我希望结果如下:

我已经看过 Pivot,但它没有解决我的问题

使用window函数:

select case when row_number() over(partition by emp.name order by empC.ID) = 1 
            then Name
            else '' end as Name, 
       Comment 
from Employee emp 
left join EmployeeComments empC On empC.EmployeeID = emp.ID

这可能会给你的结果某种顺序 window 至少

WITH cte AS(
    SELECT  emp.Name ,
            empC.Comment,
            RANK() OVER (ORDER BY emp.Name) NameOrder,
            ROW_NUMBER() OVER (PARTITION BY emp.Name ORDER BY empC.ID) RN
    FROM    Employee emp
            LEFT JOIN EmployeeComments empC ON empC.EmployeeID = emp.ID
)
SELECT
    Name = (CASE WHEN RN = 1 THEN Name ELSE '' END),
    Comment
FROM 
    cte
ORDER BY 
    NameOrder,
    RN

"use Cross Join:"

Query:

  select case t.cnt
  when  1 then
  coalesce(t.Name,' ') 
  end as Name,t.comment
  from 
  (
  select t1.Name,t2.comment,row_number()
  over(partition by t1.name order by t1.Name) 
  as cnt
  from
  EmployeeComments t1 
  cross join 
  Employee t2
  where t1.ID=t2.Employeeid
  )t