0

我有一個結果集在相同的ID我有三行,因爲有不同的名字,姓氏和分支名稱。如何選擇列值以相互對應?

例如:

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

我想一行此ID表示任何BRANCHNAME但它應該顯示該BRANCHNAME對應名字和姓氏和(平衡的總和)不是隨機的組合即它可以是德布拉海斯與代頓branchname不Lynden作爲BranchName。

基本上,名字,姓氏和分支名稱應該相互對應,而不是任何名字或姓氏組合。我想知道我們怎樣才能做到這一點?

預期輸出:

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

或者

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

你可以編輯你的問題併爲你想要的查詢添加預期的結果嗎? –

+0

@TT。我希望結果只顯示一行而不是3行和餘額總和:ID姓名姓氏分支名稱總和(餘額)101 Debra Hays Dayton 750或101 Daniel Brinkman Lynden 750 –

回答

2
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 | 
+-----+-----------+----------+------------+---------+