0

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')
4

0 に答える 0