SQL-запрос, генерирующий эту ошибку. В списке выбора можно указать только одно выражение, если подзапрос не введен с EXISTS. - PullRequest
0 голосов
/ 20 января 2012

У меня есть вопрос по SQL-запросу. Я пытаюсь вложить два отдельных запроса, которые выполняются в индивидуальном порядке.


Первый запрос

Select DISTINCT Leads.EmailAddress,ClientCustomFields.CommonName , LeadSources.Name, CONVERT(VARCHAR(10), leads.LeadStatusDate,101) AS [MM/DD/YYYY],Leads.Age,Leads.State, Leads.ProgramOfInterest, Leads.HighestEducationLevel, Leads.LeadNumber from LeadSources inner join Leads on Leads.LeadSourceNumber=LeadSources.LeadSourceNumber join ClientCustomFieldPrograms on Leads.ClientCustomFieldProgramsNumber=ClientCustomFieldPrograms.ClientCustomFieldProgramsNumber join  ClientCustomFields on ClientCustomFieldPrograms.ClientCustomFieldsNumber=ClientCustomFields.ClientCustomFieldsNumber where Leads.EmailAddress in ('beloved1965@charter.net') AND Year (Leads.LeadDate)=2011 and ClientCustomFields.CommonName LIKE '%Ashford%' and Leads.LeadStatus='sent' order by  Leads.EmailAddress

Второй запрос

 /****** Script for SelectTopNRows command from SSMS  ******/ 
SELECT 
CASE
   WHEN CustomFieldsXML.value('(/Salutation/node())[1]', 'varchar(max)') = 'Mr.' THEN   'Male'
WHEN CustomFieldsXML.value('(/Salutation/node())[1]', 'varchar(max)') = 'Mrs.' THEN 'Female'
WHEN CustomFieldsXML.value('(/Salutation/node())[1]', 'varchar(max)') = 'Ms.' THEN 'Female'
ELSE 'Unknown' END as Gender, dbo.ClientLeadDistribution.LeadNumber, dbo.ClientLeadDistribution.Postdate, dbo.ClientLeadDistribution.ClientCustomFieldsNumber, dbo.ClientCustomFields.CommonName, dbo.Leads.LeadSourceNumber, dbo.LeadSources.Name, dbo.Leads.ProgramOfInterest, dbo.Leads.EmailAddress from dbo.ClientLeadDistribution join dbo.Leads on dbo.ClientLeadDistribution.LeadNumber = dbo.Leads.LeadNumber join dbo.LeadSources on dbo.Leads.LeadSourceNumber = dbo.LeadSources.LeadSourceNumber join dbo.ClientCustomFields on dbo.ClientLeadDistribution.ClientCustomFieldsNumber = dbo.ClientCustomFields.ClientCustomFieldsNumber where CustomFieldsXML.exist('/Salutation') = 1 and YEAR (postdate) = 2012 and MONTH (postdate)=1 --and dbo.ClientLeadDistribution.ClientCustomFieldsNumber in (1810,1820,1830,2750,2760,2770) order by PostDate, ClientCustomFieldsNumber

Комбинация

    Select DISTINCT ClientLeadDistribution.ClientCustomFieldsNumber,   Leads.EmailAddress,ClientCustomFields.CommonName , LeadSources.Name, CONVERT(VARCHAR(10), leads.LeadStatusDate,101) AS [MM/DD/YYYY],Leads.Age,Leads.State, Leads.ProgramOfInterest, Leads.HighestEducationLevel, Leads.LeadNumber from LeadSources inner join Leads  on Leads.LeadSourceNumber=LeadSources.LeadSourceNumber join ClientCustomFieldPrograms on Leads.ClientCustomFieldProgramsNumber=ClientCustomFieldPrograms.ClientCustomFieldProgramsNumber join  ClientCustomFields on ClientCustomFieldPrograms.ClientCustomFieldsNumber=ClientCustomFields.ClientCustomFieldsNumber join ClientLeadDistribution on ClientCustomFields.ClientCustomFieldsNumber=ClientLeadDistribution.ClientCustomFieldsNumber where Leads.EmailAddress in ('beloved1965@charter.net') AND Year (Leads.LeadDate)=2011  and ClientCustomFields.CommonName LIKE '%Fortis%' and Leads.LeadStatus='sent' and ClientLeadDistribution.ClientCustomFieldsNumber =(SELECT ClientLeadDistribution.CustomFieldsXML,CASE
WHEN CustomFieldsXML.value('(/Salutation/node())[1]', 'varchar(max)') = 'Mr.' THEN 'Male'
WHEN CustomFieldsXML.value('(/Salutation/node())[1]', 'varchar(max)') = 'Mrs.' THEN 'Female'
WHEN CustomFieldsXML.value('(/Salutation/node())[1]', 'varchar(max)') = 'Ms.' THEN 'Female'
ELSE 'Unknown' END as Gender from dbo.ClientLeadDistribution join dbo.Leads on dbo.ClientLeadDistribution.LeadNumber = dbo.Leads.LeadNumber join dbo.LeadSources on dbo.Leads.LeadSourceNumber = dbo.LeadSources.LeadSourceNumber join dbo.ClientCustomFields on dbo.ClientLeadDistribution.ClientCustomFieldsNumber = dbo.ClientCustomFields.ClientCustomFieldsNumber where CustomFieldsXML.exist('/Salutation') = 1 AND YEAR (postdate) = 2012 and MONTH (postdate)=1) --and dbo.ClientLeadDistribution.ClientCustomFieldsNumber in (1810,1820,1830,2750,2760,2770)--order by ClientCustomFields.CommonName--order by  Leads.EmailAddress

И, наконец, я получаю эту ошибку, я пытался что-то, но, похоже, ничего не работает.Любая помощь или предложения приветствуются.

1 Ответ

1 голос
/ 20 января 2012

Ваш подзапрос возвращает 2 поля: «CustomFieldsXML» и «пола».

Ошибка говорит вам, что вы не можете вернуть 2 поля. Я думаю, что вы только после "пола", поэтому удалите первый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...