MySQLServer:检查组中是否存在条件,然后标记整个组

问题描述 投票:0回答:1

我的目标是在现有表中添加另一列,以查看值/条件是否存在于组中,并适当地标记整个组(如果存在)。>

[如果一个团队的一个项目的预算> = 20M或Actual_Spend> = 2.5M,我想将该团队及其所有项目标记为“类别”列中的表1。无论同一团队中的其他项目是否符合此条件。

我将提供带有我的解决方案的SQL小提琴链接:http://sqlfiddle.com/#!18/3ddaf/12/0我将在“ Team”和“ Category”的另外两列中结束,并且不确定它们如何结束。以下是我要寻找的最终结果。我愿意提供比我提供的更好的解决方案。

谢谢您的时间

    | Team | ProjectID | Budget   | Actual_Spend | State      | Category |
    |------|-----------|----------|--------------|------------|----------|
    | Cyan | 2         | NULL     | NULL         | Utah       | Table 1  |
    | Blue | 1         | NULL     | 3000000      | California | Table 1  |
    | Cyan | 1         | 20000000 | 1000000      | Utah       | Table 1  |
    | Blue | 2         | 22000000 | NULL         | California | Table 1  |
    | Red  | 1         | 7000000  | 1000000      | Washington | Table 2  |
    | Red  | 2         | 19999000 | 2490000      | Oregon     | Table 2  |
    | Gray | 1         | 19000000 | 2500000      | Utah       | Table 1  |
    | Gray | 1         | 10000000 | 500000       | Utah       | Table 1  |

提供创建数据集的代码:

    Create Table Source_Data
    (
      Team varchar(50),
      ProjectID  INT,
      BUDGET INT,
      Actual_Spend INT,
      State varchar(max),
     )

     INSERT INTO Source_Data
     VALUES
     ('Blue',1,NULL,3000000,'California'),
     ('Green',1,20000000,1000000,'Utah'),
     ('Blue',2,22000000,NULL,'California'),
     ('Green',2,NULL,NULL,'Utah'),
     ('Red',1,7000000,1000000,'Washington'),
     ('Red',2,19999000,2490000,'Oregon'),
     ('Yellow',1,19000000,2500000,'Utah'),
     ('Yellow',1,10000000,500000,'Utah');

我的目标是在现有表中添加另一列,以查看值/条件是否存在于组中,并适当地标记整个组(如果存在)。如果团队有一个项目...

sql-server left-join self-join
1个回答
0
投票

我认为您正在寻找窗口功能:

© www.soinside.com 2019 - 2024. All rights reserved.