Hier ist eine Lösung. Reduzieren Sie zuerst die Menge auf verschiedene Zeilen in einer abgeleiteten Tabelle und wenden Sie dann GROUP BY auf dieses Ergebnis an:
SELECT SUM(case when d.status = 2 then d.value end) as 'val_accepted'
FROM (
SELECT DISTINCT p.id, p.status, p.value, pc.library_id
FROM props p
INNER JOIN p_contents AS pc ON p.id = pc.prop_id
INNER JOIN contents AS c ON c.id = pc.library_id
WHERE p.account_id = 3) AS d
GROUP BY d.library_id
Sie verwenden DISTINCT(pc.library_id)
in Ihrem Beispiel, als ob DISTINCT nur für die Spalte innerhalb der Klammern gilt. Dies ist ein weit verbreiteter Irrtum. DISTINCT gilt für alle Spalten der Auswahlliste. DISTINCT ist keine Funktion; es ist ein Abfragemodifikator.