1
私は2つのテーブルから 'userID'を計算する必要があるクエリがあります。カウントと左結合によるSQLクエリ
SQLクエリ:
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
しかし、結果は私が期待したものではありません。それは私に2番目の左の結合をした後に間違った数を私に与えている。場合によっては2倍の結果となり、同じ結果を表示します(スクリーンショットに添付)。
あなたは、テーブルdbo.UserEmailsOpensの定義を表示することができます任意の質問がある場合は、私に教えてください? –
サブクエリを使用して結合する前にカウントするか、またはテーブル結合前に一意にする値でパーティション化されたウィンドウ関数を使用してカウントする必要があります。 – xQbert
わかりませんが、nullがカウントされている可能性があります。あなたはそれをしたいですか? –