私は2つのテーブルを使用する次のクエリを持っています。 1つは連絡先、もう1つはEmailです。連絡先には、ContactId、FirstName、LastNameという列があります。 Emailには、EmailId、ContactId、EmailAddressという列があります。MS SQL - レコードを変更せずに姓と名を表示
基本的な重複チェックを実行するこのクエリがあります。数値とEメールを返します(2 - [email protected] = 2の連絡先には[email protected]というメールがあります)。電子メールに関連付けられた名字と姓を表示しようとしていますが、そうすると、生成されるデータの量が変わります。これは、ファーストネームとラストネームが添付された電子メールを取得している可能性が高いためです。
ここにクエリがあります。私はSELECT CONTACT.LASTNAMEとCONTACTを入力しようとします。 FIRSTNAMEはGROUP BYと同様に、出力されるデータの量を変更します。より多くの列が作成されます(予想されます)が、さらに行があり、データは実際にはあまり関連性がありません(より多くのNULLが戻されます)。これを引き起こしているのはどうしたらいいですか?
SELECT COUNT(CONTACT.CONTACTID) AS [DUPLICATECOUNT], EMAIL.ADDRESS AS [EMAILADDRESS]
FROM CONTACT
INNER JOIN EMAIL on EMAIL.ContactID = CONTACT.ContactId
GROUP BY EMAIL.ADDRESS
HAVING COUNT (CONTACT.ContactID) > 1
ORDER BY [DUPLICATECOUNT] DESC
定義「生成されるデータの量を変更する」:より多くの列が(保証) ?より多くの行(非常にありそうもない)?前者の場合、他に何を期待しましたか?あなたはそれらを代わりに単一の列(「セル」と考える)として表示しますか? –
多くの列、少ない行 EDIT:実際には行は増えますが、技術的にはデータが少なくなります(nullがさらに表示されます) –
期待どおりの結果はありますか?あなたが理解したように、2つのフィールドでグループ分けすると、名前が異なる場合にカウントに影響が及ぼされ、より多くの結果が追加されます。名前を1つの列に結合したいですか? – sgeddes