2016-03-12 3 views
0

Я пытаюсь изучить sql и надеялся получить помощь по вопросу, с которым я столкнулся.SQL Self Присоединиться, чтобы разделить пользователей и агентов

У меня есть стол, как показано ниже.

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' 

ответ

1

Вам просто нужно 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'; 

 Смежные вопросы

  • Нет связанных вопросов^_^