メールアドレスを共有するアカウントのデータベースをクリーンアップしています。一部のメール アドレスは 20 ものアカウントで使用されていますが、これを許可しない新しいシステムに移行しています。
私がここでやろうとしているのは、電子メール アドレスのリスト、それらが使用された回数のカウント、およびアカウントの詳細を含む HTML テーブルを含む 3 番目の列を作成することです。これらのテーブルは、関連付けられたアドレスに電子メールで送信され、アカウントを修正するよう依頼されます。
それ自体では、関数は正しく機能します。
SELECT MembershipNumber td, Username td, FirstName td, Lastname td, Telephone td, Mobile td
FROM [dbo].[DuplicateEmailAccounts] ('someone@example.com')
FOR XML RAW('tr'), ELEMENTS, ROOT('table')
これにより、関連するすべてのアカウントを一覧表示する HTML テーブルを含む XML 応答が生成されます。これまでのところすべて順調です。
問題は、メールアドレスのリストに参加しようとしたときに始まります。最終的な出力は、メールマージ操作を行うためにmailchimpにアップロードするCSVファイルになります。関数をより大きな SQL ステートメントに含めると、次のエラーが発生します。
メッセージ 8155、レベル 16、状態 2、行 26 「アカウント」の列 1 に列名が指定されていません。
これを修正する方法についての提案は大歓迎です!
select m.E_mail, count(*) MemberCount, accounts.*
from Members m
CROSS APPLY (
(SELECT MembershipNumber td, Username td, FirstName td,
Lastname td, Telephone td, Mobile td
FROM [dbo].[DuplicateEmailAccounts] (E_mail)
FOR XML RAW('tr'), ELEMENTS, ROOT('table')) ) accounts
where m.E_mail is not null and dbo.trim(m.E_mail) <> ''
group by m.e_mail
having count(*) > 1
order by count(*) desc