这对我来说很难解释,但我们走了:
我尝试将变量值添加到累积值最高的组中,并将该组分配给我的数据集(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)
现在,在我的数据集中,我有许多不同的组和变量,因此向组总和添加1个变量值会影响很多其他变量,这会影响很多组等等。
我需要的是关于如何解决这个问题的一些功能或一些指导。任何帮助表示赞赏! 谢谢:))
答案 0 :(得分:0)
GROUP之间的所有"变量" 变量的结果将是顶级GROUP将拥有属于该组的所有VARIABLES的所有值以及自己的INITIAL值。考虑到这一点,我们可以继续计算每个组的最大潜力总数并占据最重要的一个:
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