在sql中连接2列并对结果应用类似操作

时间:2015-03-04 01:58:16

标签: sql sql-server

SELECT 
    CONCAT(SG.firstname +' ', SG.lastName) AS  'Name', 
    SG.entityId 'ID',
    dbo.GetTitleDescriptionByEntityID(SG.entityId) 'Title',
    CASE ISNULL(EC.address2, '') 
      WHEN '' THEN EC.address1 
      ELSE EC.address1 +', ' + EC.address2
    END +', ' + EC.city + ', ' + LDState.ItemName + ', ' + EC.zip 'Address',
    CR.clinicalRate
FROM 
    StaffGeneral SG WITH (NOLOCK) 
JOIN 
    LookupDetails LD WITH (NOLOCK) ON SG.employeeStatus = LD.lookupDetailsId AND LD.ItemAbbreviation = 'SCSSC'
JOIN
    othersRating or1 WITH (nolock) ON SG.entityId = or1.entityId AND dateRated = (SELECT TOP 1 MAX(dateRated) FROM OthersRating r1 WITH (nolock) WHERE r1.entityid = SG.entityId)       
JOIN 
    LookupDetails LDRating with (nolock) ON or1.rating = LDRating.lookupDetailsId AND LDRating.ItemAbbreviation NOT IN ('RTNP', 'RTDNU', 'RTPENDING', 'RTDELETE', 'RTTERMI')    
JOIN 
    EntityContacts EC with (nolock) ON SG.entityId = EC.entityId AND (eC.contactId = 'General' or EC.contactId = 'General1') AND EC.deleted = 0
JOIN 
    LookupDetails LDState WITH (NOLOCK) ON EC.state = LDState.lookupDetailsId
JOIN 
    ContractorRate CR ON SG.entityId = CR.entityId AND CR.deleted = 0
WHERE 
    SG.isActive = 0 AND SG.deleted = 0
    AND ((SG.entityId = @subContractorID) OR (@subContractorID IS null))
    AND ((@subContractorName IS NULL) OR ((EC.firstName + ' ' + EC.lastName) LIKE @subContractorName + '%'))

在上面的查询中,我想用空格连接名字和姓氏,并根据存储过程@subcontractorname的输入进行查询。

subcontractorname为空时没关系,但是当它跳转到Or子句时我无法得到结果。

尝试了SQL Server Profiler,但没有显示查询的形成方式

我尝试通过将整个SQL放在var中来执行SQL,但我遇到了varchar(max)的问题。

请告知

0 个答案:

没有答案