SQL добавить дополнительный столбец из таблицы - PullRequest
0 голосов
/ 09 октября 2018

Я просматривал веб-страницы, но SQL является новым для меня, поэтому правильный синтаксис ускользает от меня из-за всех причудливых объединений и т. Д. Как мне добиться следующего:

SELECT 
event.Id, 
event.Name, 
event.Date,
event.Size,  
event.Email,  
verificationdata.Value,

/*I want the below value column duplicated, using data from the next comment*/
verificationdata.Value

FROM event
INNER JOIN verification on event.Id = verification.EventId
INNER JOIN verificationdata on verificationdata.vId = verification.Id
WHERE event.Id > 00001
AND 
(verificationdata.Field = 'Grievances'OR verificationdata.Field = 'ERROR')

/*Pulling THIS data into the duplicated column*/
WHERE verificationdata.Field = 'VideoDurationPTS_0'



Id | Name | Date   | Size | Email     | verificationdata.Value  | verificationdata.Value                                   
01 | Dave | 01-Jan | 2000 | d@d.com   | A                       | B                            
02 | Bob  | 02-Jan | 3000 | b@b.com   | A                       | B

A= (Значение при проверкеdata.Field = Обиды) B = (Значение при проверкеdata.Field = Длительность) Любая помощь будет супер!

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Если я правильно понимаю, вы хотите:

SELECT e.Id, e.Name, e.Date, e.Size, e.Email,  
       MAX(CASE WHEN vd.Field IN ('Grievances', 'ERROR') THEN vd.Value END) as field,
       MAX(CASE WHEN vd.Field IN ('VideoDurationPTS_0') THEN vd.Value END) as VideoDurationPTS_0
FROM event e INNER JOIN
     verification v
     ON e.Id = v.EventId INNER JOIN
     verificationdata vd
     ON vd.vId = v.Id
WHERE e.Id > 00001 AND
      vd.Field IN ('Grievances', 'ERROR', 'VideoDurationPTS_0')
GROUP BY e.Id, e.Name, e.Date, e.Size, e.Email;
0 голосов
/ 09 октября 2018

Попробуйте ниже, используя условное агрегирование

SELECT 
event.Id, 
event.Name, 
event.Date,
event.Size,  
event.Email,  
MAX(CASE WHEN verification.Field IN ('Grievances') THEN 'A' END) as val1,
MAX(CASE WHEN verification.Field IN ('VideoDurationPTS_0') THEN 'B' END) as 
val2
FROM event
INNER JOIN verification on event.Id = verification.EventId
INNER JOIN verificationdata on verificationdata.vId = verification.Id
WHERE event.Id > 00001
AND 
(verificationdata.Field in( 'Grievances','ERROR','VideoDurationPTS_0')
group by event.Id, event.Name, event.Date, event.Size,  event.Email
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...