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