2017-06-13 44 views
0

我有这个查询来查找所有具有'nan'的字段并且必须通过记录显示哪些字段具有该值记录。任何建议将案例字段中的字段拼接为1

select Lastname, Firstname, Middle_Name__c ,MailingCity,Mailingstreet,Email,Parent1_FirstName,Parent1_LastName,Parent1_Email, Parent2_FirstName,Parent2_LastName, parent2_email, 
     case 
     when LastName like '%nan%' then LastName else ' 'end 'lastname_Imapcted' 
     ,case when FirstName like '%nan%' then FirstName else ' ' end 'Firstname_Imapcted' 
     ,case when Middle_Name__c like '%nan%' then Middle_Name__c else ' ' end 'MiddleName_Imapcted' 
     ,case when MailingCity like '%nan%' then MailingCity else ' ' end 'MailingCity_Imapcted' 
    ,case when Email like '%nan%' then Email else ' ' end 'Email_Imapcted' 
,case when Parent1_FirstName like '%nan%'then Parent1_FirstName else ' ' end 'Parent1_Firstname_Imapcted' 
,case when Parent1_LastName like '%nan%' then Parent1_LastName else ' ' end 'Parent1lastname_Imapcted' 
,case when Parent1_Email like'%nan%' then Parent1_email else ' ' end 'Parent1email_Imapcted' 
,case when Parent2_Email like '%nan%' then Parent2_email else ' ' end 'Parent2email_Imapcted' 
,case when Parent2_FirstName like '%nan%' then Parent2_firstname else ' ' end 'Parent2firstname_Imapcted' 
,case when Parent2_LastName like '%nan%'then parent2_lastname else ' ' end 'Parent2lastname_Imapcted ' 
,case when MailingStreet like '%nan%' then MailingStreet else ' ' end 'Mailingstreet_Imapcted' 
,concat(Parent1_Firstname_Imapcted,Parent2lastname_Imapcted) as 'Impacted Fields' 
    from RE_Data_Sandbox..Temp_ADB_Student_Roster_ALL_06092017 
    where LastName like '%nan%' 
or FirstName like '%nan%' 
or Middle_Name__c like '%nan%' 
or MailingCity like '%nan%' 
or Email like '%nan%' 
or Parent1_FirstName like '%nan%' 
or Parent1_LastName like '%nan%' 
or Parent1_Email like'%nan%' 
or Parent2_Email like '%nan%' 
or Parent2_FirstName like '%nan%' 
or Parent2_LastName like '%nan%' 
or MailingStreet like '%nan%' 

回答

1

第一关where子句可以重新写为

where concat(LastName,FirstName,Middle_Name__c,MailingCity,Email,Parent1_FirstName,Parent1_LastName,Parent1_Email,Parent2_Email,Parent2_FirstName,Parent2_LastName,MailingStreet) like '%nan%' 

,你的选择字段应该只是正常工作或更好地利用IIF

IIF (LastName like '%nan%',LastName,'') 'lastname_Imapcted' 
,IIF( FirstName like '%nan%',FirstName,'')'Firstname_Imapcted' 
,IIF(Middle_Name__c like '%nan%', Middle_Name__c ,'') 'MiddleName_Imapcted' 
,IIF( MailingCity like '%nan%',MailingCity ,'') 'MailingCity_Imapcted' 
    ,IIF( Email like '%nan%', Email ,'') 'Email_Imapcted' 
,IIF Parent1_FirstName like '%nan%'then Parent1_FirstName ,'') 'Parent1_Firstname_Imapcted' 
,IIF( Parent1_LastName like '%nan%',Parent1_LastName ,'') 'Parent1lastname_Imapcted' 
,IIF( Parent1_Email like'%nan%', Parent1_email ,'') 'Parent1email_Imapcted' 
,IIF( Parent2_Email like '%nan%',Parent2_email ,'') 'Parent2email_Imapcted' 
,IIF( Parent2_FirstName like '%nan%',Parent2_firstname ,'') 'Parent2firstname_Imapcted' 
,IIF( Parent2_LastName like '%nan%'then parent2_lastname ,'') 'Parent2lastname_Imapcted ' 
,IIF( MailingStreet like '%nan%', MailingStreet ,'') 'Mailingstreet_Imapcted' 
0

你会得到一个字段列表只需串联字符串。如果你想有一个逗号分隔的列表:

select stuff((case when LastName like '%nan%' then ',LastName' else '' end) + 
      (case when FirstName like '%nan%' then ',FirstName' else '' end) + 
      (case when Middle_Name__c like '%nan%' then ',Middle_Name__c' else '' end) + 
      (case when MailingCity like '%nan%' then ',MailingCity' else '' end) + 
      . . . 
      (case when MailingStreet like '%nan%' then ',MailingStreet' else '' end), 
      1, 1, '') 
. . . 

stuff()只是处理逗号所以列表看起来更“正常”。

相关问题