有重叠记录时获取列列表

时间:2016-11-23 09:37:34

标签: sql sql-server

我有一个表格,其中包含多个用户创建的ProfitcenterFinancialAccount上的重叠条目。

我需要向Submitteby列中的用户发送电子邮件,告知他们的重叠条目(说PC1CE1有重叠记录,我应该发送电子邮件给abcdeg并显示电子邮件中的记录。

如何做到这一点?请帮忙。

以下是该表的快照。

ProfitCenterCode    FinancialAccountCode    FormName    SubmittedBy
PC1                  CE1                      SMSG       abc
PC1                  CE1                      SMSG       deg
PC2                  CE2                  MCB Dynamic    iol
PC2                  CE2                    N/A          ppp
PC2                  CE2                 MCB Dynamic     iol
PC2                  CE2                   MCB Dynamic   iol
PC2                  CE2                  MCB Dynamic    iol
PC2                  CE2                  MCB Dynamic    iol

1 个答案:

答案 0 :(得分:0)

下面的查询会产生这样的结果

  

ProfitCenterCode,FinancialAccountCode,窗体名称,SubmittedByList

     

“PC1”,“CE1”,“SMSG”,“abc,deg”

   SELECT outer.ProfitCenterCode,outer.FinancialAccountCode,outer.FormName    
   (SELECT STUFF((SELECT ','+inner.SubmittedBy FROM <YOUR-TABLE> inner 
   WHERE inner.ProfitCenterCode = outer.ProfitCenterCode 
   and inner.FinancialAccountCode = outer.FinancialAccountCode
   and inner.FormName = outer.FormName 
   FOR XML PATH ('')),1,1,"") AS SubmittedByList)
   FROM <YOUR-TABLE> outer
   GROUP BY outer.ProfitCenterCode,outer.FinancialAccountCode,outer.FormName

如果你想像你在这个结果集中提到的那样单独发送行,你必须通过每个条目进行迭代并查询以下条件,然后将结果发送到SubmittedByList(如果需要,将值拆分为',')

 WHERE ProfitCenterCode = <entry-ProfitCenterCode>
       and FinancialAccountCode = <entry-FinancialAccountCode>
       and FormName = <entry-FormName>