Select 只有我加入的 table 列中的前 1 个值?

Select only the top 1 value from a column in a table that I'm joining?

所以下面是查询,我怎样才能只将前 1 个“agencyID”存储到 DCA.AgencyID 中?我知道下面查询的结构现在将 select 所有“agencyID”值,而不仅仅是前 1 个值。

SELECT AP.ID
        ,DCA.AgencyID as agencyID --How to store select top 1?
        ,replace(LTRIM(RTRIM(AP.UserNameWebsite)), '\', '') AS username
        ,replace(LTRIM(RTRIM(AP.FirstName)), '\', '') + N' ' + replace(LTRIM(RTRIM(AP.LastName)), '\', '') AS fullName
        ,LTRIM(RTRIM(AP.EmailAddress)) AS email
        ,LTRIM(RTRIM(AP.Phone1)) AS phone1
        ,LTRIM(RTRIM(AP.Phone2)) AS phone2
        ,LTRIM(RTRIM(AP.GreenSolution)) AS greenSolution
        ,CASE 
            WHEN UserType = 'AM'
                THEN 1
            ELSE 0
            END AS producer
    FROM DEV01_DataExchange.[DuckCreek].[fpmAgentsProfile] AP
    Inner Join [DUCKCREEK_DEV].[DEV01_DuckCreek_Consolidated].[dbo].Agency DCA
    on AP.AgencyID = DCA.Reference
    WHERE TransType = 'A' AND DC_LastModifiedDate IS NULL AND DCA.Reference is NOT NULL

你的问题有点含糊,不过答案是cross apply:

FROM DEV01_DataExchange.[DuckCreek].[fpmAgentsProfile] AP CROSS APPLY
     (SELECT TOP (1) DCA.*
      FROM [DUCKCREEK_DEV].[DEV01_DuckCreek_Consolidated].[dbo].Agency DCA
      WHERE AP.AgencyID = DCA.Reference
     ) DCA
WHERE TransType = 'A' AND DC_LastModifiedDate IS NULL AND DCA.Reference is NOT NULL;

通常会使用 ORDER BY 子句。也许 ORDER BY DCA.AgencyID DESC?但是,如果有一个名为 AgencyID 的列,我很惊讶它没有用于对齐 AP.

此外,某些 WHERE 条件可能属于子查询。

您可以使用交叉应用代替连接:

SELECT   AP.ID
        ,DCA.AgencyID as agencyID
        ,replace(LTRIM(RTRIM(AP.UserNameWebsite)), '\', '') AS username
        ,replace(LTRIM(RTRIM(AP.FirstName)), '\', '') + N' ' + replace(LTRIM(RTRIM(AP.LastName)), '\', '') AS fullName
        ,LTRIM(RTRIM(AP.EmailAddress)) AS email
        ,LTRIM(RTRIM(AP.Phone1)) AS phone1
        ,LTRIM(RTRIM(AP.Phone2)) AS phone2
        ,LTRIM(RTRIM(AP.GreenSolution)) AS greenSolution
        ,CASE 
            WHEN UserType = 'AM'
                THEN 1
            ELSE 0
            END AS producer
    FROM DEV01_DataExchange.[DuckCreek].[fpmAgentsProfile] AP
    Cross Apply
    (
        Select top 1 AG.*
        From [DUCKCREEK_DEV].[DEV01_DuckCreek_Consolidated].[dbo].Agency AG
        where AG.Reference = AP.AgencyID
    ) DCA
    WHERE TransType = 'A' AND DC_LastModifiedDate IS NULL AND DCA.Reference is NOT NULL