2 つの異なるテーブルから情報を取得すると、重複が発生するコードがあります。SELECT ステートメントで DISTINCT を試しましたが、「比較できないため、ntext データ型を DISTINCT として選択できません」というエラーが大量に発生します。
したがって、次の試みは GROUP BY を試すことでしたが、「列 Person.Pers_FirstName は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。
したがって、私のレコードには複数の関係フィールドがありますが、一部のレコードには関係がないか、1 つまたは複数の関係 (オプションは NULL、プロジェクト エンジニア、プロジェクト所有者、またはプロジェクト請負業者) がないため、これは問題です。現在のコードでは NULL とプロジェクト エンジニアのみが表示されますが、他の 2 つのレコードがある場合は除外されます。他の関係の説明を含めると、重複が発生します。
SELECT
RTRIM(ISNULL(Pers_FirstName, '')) + ' ' + RTRIM(ISNULL(Pers_LastName, '')) AS Pers_FullName,
RTRIM(ISNULL(oppocomp.Comp_PhoneCountryCode, '')) + ' ' + RTRIM(ISNULL(oppocomp.Comp_PhoneAreaCode, '')) + ' ' + RTRIM(ISNULL(oppocomp.Comp_PhoneNumber, '')) AS Comp_PhoneFullNumber,
RTRIM(ISNULL(oppocomp.Comp_FaxCountryCode, '')) + ' ' + RTRIM(ISNULL(oppocomp.Comp_FaxAreaCode, '')) + ' ' + RTRIM(ISNULL(oppocomp.Comp_FaxNumber, '')) AS Comp_FaxFullNumber,
RTRIM(ISNULL(Pers_PhoneCountryCode, '')) + ' ' + RTRIM(ISNULL(Pers_PhoneAreaCode, '')) + ' ' + RTRIM(ISNULL(Pers_PhoneNumber, '')) AS Pers_PhoneFullNumber,
RTRIM(ISNULL(Pers_FaxCountryCode, '')) + ' ' + RTRIM(ISNULL(Pers_FaxAreaCode, '')) + ' ' + RTRIM(ISNULL(Pers_FaxNumber, '')) AS Pers_FaxFullNumber,
Opportunity.*, oppocomp.Comp_Name, oppocomp.Comp_Territory, oppocomp.Comp_EmailAddress,
oppocomp.Comp_CompanyId, oppocomp.Comp_SecTerr, oppocomp.Comp_CreatedBy,
oppocomp.Comp_PrimaryUserID, Terr_Caption, Pers_Title, Pers_EmailAddress, Pers_SecTerr,
Pers_CreatedBy, Pers_PersonId, Pers_PrimaryUserID, Chan_Description,
oppocomp.Comp_ChannelID, (Oppo_Base_Currency.Curr_CurrencyID) AS Oppo_WeightedForecast_CID,
Pers_ChannelID ((Oppo_Forecast / Oppo_Forecast_Currency.Curr_Rate) * Oppo_Certainty / 100) AS Oppo_WeightedForecast,
Oppo_PrimaryAccountId AS Acc_AccountId, rend_Notes, renl_description,
relcomp.Comp_Name AS Rela_CompanyName
FROM Opportunity
LEFT JOIN Person ON Oppo_PrimaryPersonID = Pers_PersonID
LEFT JOIN Company AS oppocomp ON Oppo_PrimaryCompanyID = Comp_CompanyId
LEFT JOIN Territories ON Oppo_SecTerr = Terr_TerritoryId
LEFT JOIN Channel ON Chan_ChannelId = Oppo_ChannelId
LEFT JOIN RelatedEntityData ON Oppo_OpportunityId = rend_entity1id
LEFT JOIN RelatedEntityLinks ON rend_relatedentitylinkid = REnL_RelatedEntityLinkID
LEFT JOIN Company AS relcomp ON rend_entity2id = relcomp.Comp_CompanyId
LEFT JOIN Currency Oppo_Forecast_Currency ON Oppo_Forecast_CID = Oppo_Forecast_Currency.Curr_CurrencyID
LEFT JOIN Currency Oppo_Base_Currency
ON Oppo_Base_Currency.Curr_CurrencyID = (
SELECT CAST(CAST(Parm_Value AS NCHAR) AS INTEGER)
FROM Custom_SysParams
WHERE Parm_Name = 'BaseCurrency'
)
WHERE Oppo_Deleted IS NULL
AND (renl_description IS NULL OR renl_description = 'Project Engineer')