[英]SQL add an extra column from table
我環顧了整個網絡,但 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 =(Verificationdata.Field = Grievances 時的值) B =(Verificationdata.Field = Duration 時的值) 任何幫助都會很棒!
嘗試以下使用條件聚合
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
如果我理解正確,你想要:
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.