SQL Self Join 分离用户和代理

SQL Self Join to separate users and agents

我正在努力学习 sql 并希望就我遇到的问题获得帮助。

我有一个 table 如下所示。

ticke no, created,  sender
1,  9:00 AM,    user
1,  9:30 AM,    agent
1,  10:00 AM,   user
1   5:00 PM agent
2   11:00 AM    user
2,  1:00 PM,    user
2,  3:00 PM,    agent
3,  2:00 PM,    agent
3,  2:30 PM,    user
3,  9:00 PM,    agent
3,  10:00 PM,   user
4,  11:00 PM,   agent

我需要将发件人字段分成两列,一列仅填充用户,另一列仅填充代理。得到这样的东西

ticke no, created,  User, Agent
1,  9:00 AM,    user, NULL
1,  9:30 AM,    NULL, agent
1,  10:00 AM,   user, NULL
1   5:00 PM,    NULL, agent
2   11:00 AM    user, NULL
2,  1:00 PM,    user, NULL
2,  3:00 PM,    NULL, agent
3,  2:00 PM,    NULL, agent
3,  2:30 PM,    user, NULL
3,  9:00 PM,    NULL, agent
3,  10:00 PM,   user, NULL
4,  11:00 PM,   NULL, agent

以下是我最接近的尝试。因为我是初学者,所以我很迷茫。

Select TestDN.dbo.ServiceDoc.[Ticket Number], TestDN.dbo.ServiceDoc.[Created     At] as UserTime, TestDN.dbo.ServiceDoc.Sender as UserSender,
(
    select TestDN.dbo.ServiceDoc.Sender as AgentSender
    from TestDN.dbo.ServiceDoc
    where TestDN.dbo.ServiceDoc.Sender = 'agent'
)
from TestDN.dbo.ServiceDoc
where TestDN.dbo.ServiceDoc.Sender = 'user'

你只需要一个case语句:

Select sd.[Ticket Number], sd.[Created     At] as UserTime, 
       (case when sender = 'user' then sender end) as sender,
       (case when sender = 'agent' then sender end) as agent
from TestDN.dbo.ServiceDoc sd
where sd.Sender = 'user';