Ich habe eine Abfrage, wo ich 'UserID' aus 2 Tabellen berechnen muss.SQL-Abfrage mit Anzahl und linken Join
SQL QUERY:
SELECT DISTINCT TOP 1000 u.id as userID, u.firstName as userFirstName, u.email as userEmail, u.phone as userPhone,
count(ueo.userID) as opensEmailCounter, count(ush.userID) as opensSmsCounter
FROM dbo.Users u
LEFT JOIN dbo.UserEmailsOpens ueo ON u.id = ueo.userID AND ueo.targetID = 4
LEFT JOIN dbo.UserSmsHistory ush ON u.id = ush.userID AND ush.targetID = 4 AND ush.opened = 1
WHERE u.deleted = 0
AND IsNull(u.firstName, '') != ''
AND IsNull(u.email, '') != ''
AND IsNull(u.phone, '') != ''
GROUP BY u.id, u.firstName, u.email, u.phone
Aber das Ergebnis ist nicht das, was ich erwartet hatte. Es gibt mir die falschen Zahlen, nachdem ich den zweiten Link beigetreten bin. Es ist in einigen Fällen doppelt mein Ergebnis und zeigt das gleiche Zählergebnis (angehängt den Screenshot).
können Sie die Tabelle dbo.UserEmailsOpens Definition zeigen? –
Sie müssen entweder vor dem Join mit einer Unterabfrage oder einer Anzahl zählen, indem Sie eine Fensterfunktion verwenden, die durch die Werte partitioniert wird, die sie vor dem Join der Tabelle eindeutig machen. – xQbert
Ich bin mir nicht sicher, aber es könnte Nullen zählen. Willst du, dass es das tut? –