Sql-Server
向多個收件人發送電子郵件
創建組或郵件列表不是一種選擇,這可能是不可能的,但我需要一種掃描
EmailMe
電子郵件地址並將其從那裡提取到電子郵件的方法。如果兩個電子郵件地址具有相同的 `vendorID **,**則應發送一封電子郵件而不是多個。下面是 DDL - 以此為例,紫色和綠色都應該是一封電子郵件的收件人,而藍色應該發送它自己的電子郵件。我該怎麼做?我將使用
dbsendmail
來發送消息。Create Table EmailMe ( ID int IDENTITY(1,1) PRIMARY KEY NOT NULL ,name varchar(100) ,vendorid int ,email varchar(500) ) Insert Into EmailMe (ID, name, email) VALUES ('purple', 12, 'purple@hsbcglobal.com') ,('green', 12, 'green@hsbcglobal.com') ,('blue', 1, 'blue@hsbcglobal.com')
在使用 COALESCE 函式獲取電子郵件列表之前,您可以使用 CTE 分解供應商,每個供應商一個。
CREATE TABLE EmailMe ( ID INT IDENTITY(1, 1) PRIMARY KEY NOT NULL , name VARCHAR(100) , vendorid INT , email VARCHAR(500) ); INSERT INTO EmailMe ( name, vendorid, email ) VALUES ( 'purple', 12, 'purple@hsbcglobal.com' ) , ( 'green', 12, 'green@hsbcglobal.com' ) , ( 'blue', 1, 'blue@hsbcglobal.com' ); DECLARE @EmailRecipients VARCHAR(MAX); ; WITH cteIds AS ( SELECT MAX(ID) AS Id FROM EmailMe GROUP BY vendorid ) SELECT @EmailRecipients = COALESCE(@EmailRecipients + ';', '') + email FROM EmailMe e JOIN cteIds c ON c.Id = e.ID; SELECT @EmailRecipients;
結果是:
blue@hsbcglobal.com;green@hsbcglobal.com