Sql 重复加减值以查找具有最大累积值的组

Sql 重复加减值以查找具有最大累积值的组,sql,sql-server-2008,Sql,Sql Server 2008,这对我来说是一个很难解释的问题,但我们现在开始: 我正在尝试向具有最高累积值的组添加变量值,并将该组分配给数据集中的变量(Microsoft SQL Server) 一些变量可以属于2个(或更多!)不同的组,我需要的是确定哪个组的值最高。如果我将该变量的值添加到该组中,该组的总和将增加,这可能会影响可能属于该组的所有其他变量 假设我有3组,它们有这些初始值: GROUP INITIAL VALUE A 7 B 10 C 5 我有这些变量,它们有自己的值:

这对我来说是一个很难解释的问题,但我们现在开始:

我正在尝试向具有最高累积值的组添加变量值,并将该组分配给数据集中的变量(Microsoft SQL Server)

一些变量可以属于2个(或更多!)不同的组,我需要的是确定哪个组的值最高。如果我将该变量的值添加到该组中,该组的总和将增加,这可能会影响可能属于该组的所有其他变量

假设我有3组,它们有这些初始值:

GROUP   INITIAL VALUE
A       7
B       10
C       5
我有这些变量,它们有自己的值:

VARIABLES   VALUES
AB          20
AC          35
BC          5
AB可以属于A组或B组,AC可以属于A组或C组等(取数值最高者)。这本质上是一个分组数据的问题

如果我只是将变量分配给当前值最高的组,则新的组累积值将如下所示:

GROUP   SUM
A       42 (A+AC)
B       35 (B+AB+BC)
C       5  (C)
但现在,A组的组和高于B组,因此变量AB应移到A组:

GROUP   SUM
A       62 (A+AB+AC)
B       15 (B+BC)
C       5  (C)
现在,在我的数据集中,我有许多不同的组和变量,因此向组和中添加一个变量的值可能会影响许多其他变量,这将影响许多组等等

我需要的是关于如何解决这个问题的一些功能或指导。感谢您的帮助! 谢谢:)

组间所有这些变量“移动”的结果是,顶部组将拥有属于该组的所有变量的所有值加上自己的初始值。考虑到这一点,我们可以继续计算每个组的最大潜在总人数,然后取最上面的一个:

With [INITIAL] ([GROUP], [VALUE]) As (
    Select 'A',  7 Union
    Select 'B', 10 Union
    Select 'C',  5
),   [VARIABLES] ([VARIABLE], [VALUE]) As (
    Select 'AB', 20 Union
    Select 'AC', 35 Union
    Select 'BC',  5
)
Select Top 1
    [GROUP],
    [VALUE] + (Select SUM([VALUE])
               From [VARIABLES]
               Where CHARINDEX([GROUP], [VARIABLE]) > 0 --< VARIABLE belongs to the GROUP
    ) As [CUMULATIVE VALUE]
From [INITIAL]
Order By [CUMULATIVE VALUE] Desc
带有[初始]([组],[值])作为(
选择“A”,7个联合
选择'B',10联合
选择“C”,5
),[变量]([变量],[值])作为(
选择'AB',20并集
选择'AC',35接头
选择'BC',5
)
选择前1名
[小组],
[值]+(选择总和([值])
来自[变量]
其中CHARINDEX([GROUP],[VARIABLE])>0--
对不起,忘了把它包括在内。我正在使用Microsoft SQL Server