Присоединение к запросу только по первому результату - PullRequest
0 голосов
/ 15 февраля 2012

Я создаю хранимую процедуру, в которой я хотел бы вернуть только первую запись из каждого совпадения вместо каждой соответствующей записи.

На данный момент я написал следующий код:

SELECT
    Tenant.FirstNames AS LeadTenantFirstName, Tenant.LastNames AS LeadTenantLastNames,
    Deposit.CertificateNumber AS DPCNumber

    FROM tblMemberPropertyDepositTenantHistory AS Tenant
    INNER JOIN tblMemberPropertyDeposits AS Deposit 
    ON Tenant.MemberPropertyDepositID = Deposit.MemberPropertyDepositID

Проблема в том, что он вернет запись для каждого арендатора в запросе на сертификат, но я хотел бы вернуть только первый арендатор, созданный для каждого сертификата?

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Если я вас правильно понимаю, вам нужно что-то вроде этого:

;WITH CTE AS
(
    SELECT
        ROW_NUMBER() OVER(PARTITION BY Tenant.MemberPropertyDepositID ORDER BY Tenant.MemberPropertyDepositID) AS RowNbr,
        Tenant.MemberPropertyDepositID,
        Tenant.FirstNames,
        Tenant.LastNames
    FROM
        tblMemberPropertyDepositTenantHistory AS Tenant
)
SELECT
    Tenant.FirstNames AS LeadTenantFirstName, 
    Tenant.LastNames AS LeadTenantLastNames,
    Deposit.CertificateNumber AS DPCNumber
FROM 
    tblMemberPropertyDeposits AS Deposit 
    LEFT JOIN CTE AS Tenant
        ON Tenant.MemberPropertyDepositID=Deposit.MemberPropertyDepositID
        AND Tenant.RowNbr=1
0 голосов
/ 15 февраля 2012

Я предполагаю, что tblMemberPropertyDepositTenantHistory (Deposit) имеет первичный ключ:

SELECT
    Tenant.FirstNames AS LeadTenantFirstName, Tenant.LastNames AS LeadTenantLastNames,
    Deposit.CertificateNumber AS DPCNumber
    FROM tblMemberPropertyDepositTenantHistory AS Tenant
    INNER JOIN tblMemberPropertyDeposits AS Deposit 
    ON Deposit.PrimaryKey = (
        SELECT MIN(tblMemberPropertyDepositTenantHistory.PrimaryKey)
        FROM tblMemberPropertyDepositTenantHistory
        WHERE tblMemberPropertyDepositTenantHistory.MemberPropertyDepositID = 
                Tenant.MemberPropertyDepositID
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...