【问题标题】:How do I select column values to be corresponding to each other?如何选择要相互对应的列值?
【发布时间】:2016-05-14 15:11:53
【问题描述】:

我有一个结果集,其中对于相同的 ID 我有三行,因为有不同的 FirstName、LastName 和 BranchName。

例如:

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

我想要此 ID 的一行显示任何 BranchName,但它应该显示该 BranchName 对应的 FirstName 和 LastName 以及(余额总和)而不是随机组合,即它可以是 Debra Hays 和 Dayton 作为分支名称而不是 Lynden 作为 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 

【问题讨论】:

  • 您可以编辑您的问题并为您想要的查询添加预期结果吗?
  • @TT。我希望结果只显示一行而不是 3 行和余额总和: ID FirstName LastName BranchName Sum(balance) 101 Debra Hays Dayton 750 或 101 Daniel Brinkman Lynden 750

标签: sql sql-server-2012 group-by correlated-subquery sql-subselect


【解决方案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 |
+-----+-----------+----------+------------+---------+

【讨论】:

    猜你喜欢
    • 2017-09-17
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 2014-09-26
    • 2020-09-28
    • 2018-07-23
    相关资源
    最近更新 更多