【发布时间】:2015-02-02 09:53:56
【问题描述】:
WITH FilteredClient AS
(
SELECT
Client.ClientId, Client.PersonId, Client.ClientCompanyId,
Client.ClientCategoryId, Client.IsImported, Client.IsModified,
Client.StatusId, Client.ClientTypeId, Client.LeadSourceId,
Person.Company, Person.FirstName, Person.MiddleName,
Person.LastName, Person.AddressLine1, Person.AddressLine2,
Person.AddressLine3, Person.City, Person.State,
Person.Country, Person.Zip,
Person.HomePhone, Person.WorkPhone, Person.CellPhone,
Person.Fax, Person.EmailId, Person.Website,
ClientStatus.ClientStatusName,
ClientCategory.ClientCategoryName,
ClientType.ClientTypeName, LeadSource.LeadSourceName,
[User].Username, Client.AddedBy, [User].UserId
FROM
Client
INNER JOIN
ClientCategory ON Client.ClientCategoryId = ClientCategory.ClientCategoryId
INNER JOIN
Person ON Client.PersonId = Person.PersonId
INNER JOIN
ClientType ON Client.ClientTypeId = ClientType.ClientTypeId
INNER JOIN
ClientStatus on Client.StatusId = ClientStatus.ClientStatusId
INNER JOIN
LeadSource on Client.LeadSourceId = LeadSource.LeadSourceId
INNER JOIN
[User] ON [User].UserId = Client.AddedBy
WHERE
(Client.CompanyId = 1
AND ClientCategory.ClientCategoryName LIKE ('%%')
AND ClientType.ClientTypeName LIKE ('%%')
AND ClientStatus.ClientStatusName LIKE ('%%')
AND LeadSource.LeadSourceName LIKE ('%%')
AND (Person.FirstName + '' + Person.MiddleName + '' + Person.LastName) LIKE ('%Tom%')
AND person.Company LIKE ('%Tom%'))
)
SELECT
ClientId, PersonId, ClientCompanyId, ClientCategoryId,
IsImported, IsModified, StatusId, ClientTypeId, LeadSourceId,
Company, FirstName, MiddleName, LastName,
AddressLine1, AddressLine2, AddressLine3,
City, [State], Country, Zip,
HomePhone, WorkPhone, CellPhone, Fax, EmailId, Website,
ClientStatusName, ClientCategoryName, ClientTypeName,
LeadSourceId, LeadSourceName, Username, AddedBy, UserId
FROM
FilteredClient
现在我根据ClientName搜索(客户名称包括公司名称和人的名字)。两者在Person 表中都有单独的列。
我将文本放入文本框中,然后点击搜索,然后文本框的值同时出现在 company.person 和 person.firstname 中。
现在我希望搜索结果来自两列,但是如果在 companyname 中找到了一些匹配项,那么它会选择 companyname 和相关的人名,但是如果我将人名放在文本框中,那么如果公司列有 0 结果,那么它是没有亲自搜索名字
如果我的情况有任何错误,请告诉我
请帮帮我
【问题讨论】:
-
合并? IE。 select coalesce(col1, col2, col3....) 将选择第一个非空列。
标签: c# sql sql-server sql-server-2008