1

私は3つの列を持つテーブルを持っていEmaildistributionlistます:UnitIDこれはユニークで、Emailそしてdept Name。ここでは、に基づいてリストを取得するためのクエリを記述しますid

SELECT distinct id, EMAIL 
FROM tblEmaildistributionlist  
WHERE dept like '%Contracts Dept%'

したがって、次のような出力が得られます。

 ID=1  Email="cc@gmail.com" etc...

しかし、1つのIDには多くの電子メールがあるので、次のような出力が必要です。

ID=1 Email=cc@gmail.com,rr@gmail.com,yy@gmail.com.` 

emailid電子メール列のすべてのカンマ区切り形式。

この結果を得るには、クエリにどのような変更が必要ですか?

4

3 に答える 3

3

Mysqlのためのこの仕事

SELECT 
     id, 
     GROUP_CONCAT(distinct EMAIL SEPARATOR ',') as Email 
from 
     tblEmaildistributionlist 
WHERE 
     dept like '%Contracts Dept%' 
GROUP BY 
     id

これはSQLServerの場合

SELECT
    a.id,
    STUFF((SELECT ','+b.Email From tblEmaildistributionlist b WHERE b.id=a.id AND b.dept like '%Contracts Dept%' FOR XML PATH ('')),1,1,'') as Email
FROM 
    tblEmaildistributionlist a
WHERE 
    a.dept like '%Contracts Dept%' 
GROUP BY
    a.id

これはOracle11g用です

SELECT 
     id, 
     LISTAGG(EMAIL, ',') as Email 
from 
     tblEmaildistributionlist 
WHERE 
     dept like '%Contracts Dept%' 
GROUP BY 
     id
于 2012-05-07T08:40:03.617 に答える
2

これを使用できます。その正常に動作します

DECLARE @listStr VARCHAR(MAX)SELECT @listStr = COALESCE(@listStr +'、'、'')+ EmailId FROM StudentDetails SELECT @listStr

このように配る-email@doamin.com、emaol1 @ domain.com

于 2013-09-06T06:42:54.463 に答える
0
    select  a.ID,Stuff((select distinct  ','+ b.EMAIL from tblEmaildistributionlist b 
   where b.ID=a.ID and b.dept like '%Contracts Dept%' FOR XML PATH ('')  ),1,1,'') AS EMAIL
     from  tblEmaildistributionlist a
    WHERE 
     a.dept like '%Contracts Dept%'
     group by a.ID

完璧に機能しています...

于 2012-05-08T08:18:02.013 に答える