Как выбрать значения столбцов, чтобы они соответствовали друг другу?

У меня есть набор результатов, где для одного и того же идентификатора у меня есть три строки, потому что есть разные FirstName, LastName и BranchName.

Например:

ID  FirstName  LastName  BranchName Balance
101   Debra      Hays      Dayton   200
101   Daniel     Brinkman  Lynden   250
101   Daniel     Brinkman  HZBK     300

Мне нужна одна строка для этого идентификатора, показывающая какое-либо BranchName, но в нем должны быть указаны соответствующие FirstName и LastName для этого BranchName и (сумма баланса) неслучайная комбинация, т. Е. Это может быть Дебра Хейс с Дейтоном в качестве фирменного наименования, а не Линден в качестве BranchName.

По сути, FirstName, LastName и BranchName должны соответствовать друг другу, а не какой-либо комбинации имени или фамилии. Мне было интересно, как мы можем этого достичь?

Ожидаемый результат:

ID  FirstName LastName BranchName Sum(balance) 
101 Debra     Hays     Dayton     750 

Или же

ID  FirstName LastName BranchName Sum(balance) 
101 Daniel    Brinkman Lynden     750 

1 ответ

DECLARE @data TABLE(ID INT,FirstName VARCHAR(128),LastName VARCHAR(128),BranchName VARCHAR(128),Balance INT);
INSERT INTO @data(ID,FirstName,LastName,BranchName,Balance)VALUES
    (101,'Debra','Hays','Dayton',200),
    (101,'Daniel','Brinkman','Lynden',250),
    (101,'Daniel','Brinkman','HZBK',300);

;WITH cte AS (
    SELECT
        ID,
        FirstName,
        LastName,
        BranchName,
        rn=ROW_NUMBER() OVER(PARTITION BY ID ORDER BY FirstName,LastName,BranchName),
        Balance=SUM(Balance) OVER (PARTITION BY ID)
    FROM
        @data
)
SELECT
    ID,
    FirstName,
    LastName,
    BranchName,
    Balance
FROM
    cte
WHERE
    rn=1;

Выход:

+-----+-----------+----------+------------+---------+
| ID  | FirstName | LastName | BranchName | Balance |
+-----+-----------+----------+------------+---------+
| 101 | Daniel    | Brinkman | HZBK       |     750 |
+-----+-----------+----------+------------+---------+
Другие вопросы по тегам