Vous pouvez utiliser cette solution simple :
SELECT DISTINCT
a.id,
b.value AS SIGN_UP,
c.value AS FIRST_NAME,
d.value AS STREET
FROM tbl a
LEFT JOIN tbl b ON a.id = b.id AND b.field_name = 'sign_up'
LEFT JOIN tbl c ON a.id = c.id AND c.field_name = 'first_name'
LEFT JOIN tbl d ON a.id = d.id AND d.field_name = 'street'
Juste pour être sûr, j'ai fait les jointures LEFT JOIN
's parce que je ne sais pas si un identifiant peut avoir manquant champs, auquel cas ils apparaîtront comme NULL
dans nos colonnes dérivées.