0
我需要在where子句中包含一个IF或CASE语句,这将为我提供一个依赖于db中数据的记录。在where子句中包含IF
我想要做的是选择在relationship_code_id中具有特定代码的某个联系人,以指示他们已被分配POA(代码为45)。如果联系人没有POA,则显示主要联系人(main_contact = 1)。但是,任何具有POA的联系人都优先于主要联系人。所以如果Joe Bloggs被分配了主要联系人,但Anne Nickols被分配了POA,这个节目Anne不是Joe。
(包括在TNTGROUP表此信息)
反正我能做到这一点?
道歉,如果这没有意义。
这是我下面的代码:
SELECT
TNTTITLE.Description_VC AS TITLE
,TNTCONTACT.Forename_VC AS FORENAME
,TNTCONTACT.Surname_VC AS SURNAME
,TNTCONTACTEMAIL.Reference_VC AS EMAIL
,TNTHOMENUMBER_GRP.Reference_VC AS GROUP_HOME_NUMBER
,RENTACC.ID AS RENT_ACCOUNT_ID
,CONVERT(DATE,RENTACC.AccountStartDate) AS RENT_ACCOUNT_START_DT
,CASE
WHEN LETOFFERS.Current_Status_ID = 42 THEN 'Complete'
ELSE 'OTHER'
END
AS STATUS
,ASSETTYPES.Description_VC AS ASSET_NAME
,CASE WHEN (SELECT MainAsset FROM RENTACC HAVING COUNT(*) > 1) THEN 1 ELSE 0 END
FROM RENT_ACCOUNTS AS RENTACC
INNER JOIN LETTING_OFFERS_T AS LETOFFERS
ON RENTACC.ID = LETOFFERS.Rent_Account_Reference_VC
AND RENTACC.AccountEndDate IS NULL
AND RENTACC.AccountType = 'T'
LEFT JOIN Letting_SYS_Master_T AS LETCODES
ON LETOFFERS.Current_Status_ID = LETCODES.CODE_ID
AND LETCODES.Type_ID = '14'
LEFT JOIN Asset_Assets_T AS ASSETS
ON RENTACC.MainAsset = ASSETS.Asset_ID
LEFT JOIN Asset_Types_T AS ASSETTYPES
ON ASSETS.Asset_TYPE_ID = ASSETTYPES.Asset_Type_ID
/**** MAIN CONTACT INFORMATION ****/
LEFT JOIN Shared_Addresses_T AS TNTADDRESS
ON ASSETS.Address_ID = TNTADDRESS.Address_ID
LEFT JOIN Contact_Group_Contacts_T AS TNTGROUP
ON RENTACC.ContactDatabaseReference = TNTGROUP.GROUP_ID
AND TNTGROUP.Main_Group_Contact_BT = 1
AND TNTGROUP.Removed_BT = 0
LEFT JOIN CONTACT_CONTACTS_T AS TNTCONTACT
ON TNTGROUP.Contact_ID = TNTCONTACT.Contact_ID
AND TNTCONTACT.Current_Status_ID = 65
AND TNTCONTACT.Deceased_Date_DT IS NULL
LEFT JOIN Shared_Codes_T AS TNTTITLE
ON TNTCONTACT.Title_Code_ID = TNTTITLE.Code_ID
AND TNTTITLE.Code_ID IN (103,104,105,106)
/**** CONTACT EMAIL INFORMATION ****/
LEFT JOIN Contact_Contact_Details_T AS TNTCONTACTEMAIL
ON TNTCONTACT.Contact_ID = TNTCONTACTEMAIL.Contact_ID
AND TNTCONTACTEMAIL.SYS_Number_Code_ID = 75
AND TNTCONTACTEMAIL.Expiry_Date_DT IS NULL
/**** GROUP HOME NUMBER INFORMATION ****/
LEFT JOIN Contact_Group_Details_T AS TNTHOMENUMBER_GRP
ON RENTACC.ContactDatabaseReference = TNTHOMENUMBER_GRP.Group_ID
AND TNTHOMENUMBER_GRP.Expiry_Date_DT IS NULL
AND TNTHOMENUMBER_GRP.SYS_Number_Code_ID = 71
它通常是更好地使用和/或替代情况/如果WHERE和ON子句。 – jarlh
可以请您最小化您的代码,只向我们展示您需要帮助的内容。真的很难阅读和理解101加入 – Stephen
@jarlh,甚至最好不要使用他们中的任何一个作为我的回答:D – Hogan