根据其他表中的值和进一步的计算将表中的列和行相交

时间:2013-12-15 12:11:10

标签: sql database

我是SQL的新手,我尝试按照一些教程和其他问题做我需要的东西,但我大部分时间都搞得一团糟。因此,我将非常感谢任何帮助: 我有两个表格,我标记为 payoffTable inTable (见下文和here)。 inTable将由玩家填充(我仍然不知道我将如何链接玩家以及他们如何处理数据库。为了保持这个问题简单,我暂时不会考虑这个问题)。

玩家将填写“贡献?”列,其值为1(正数)或0(负数)。如果玩家填写0,则必须填写“quota_EZ”列值为0,“quota_NEZ”值为3.如果他们填入值1,则允许他们填写“quota_EZ”列 0,1,2或3,“quota_NEZ”具有相同的值,但两列的行总和必须为3.我提供此信息只是为了让您理解表格。再次,为了保持简单,现在我不想设置任何控件,以防任何用户不适当地填充表格。

以下表格显示了我刚刚曝光的内容。

inTable ,前3列中的值是玩家填写的值的示例(玩家将在12个独立轮次中填写表格,因此我应该存储每轮的输出,但是现在我不想通过它来保持简单,除非它很容易做,你很想告诉我该怎么做)。

inTable

使用“贡献”列中的值之和,我需要在支付表中选择EZ_0和EZ_8之间的一列。同时使用“quota_EZ”列的总和,我需要在支付表中选择一行(0到24之间,列“配额”)。我需要选定列和所选行的交集中的值以进行进一步计算。使用“quotas_NEZ”的总和,我需要通过标记为NEZ的列在支付表中选择一行。此外,我需要此交叉点的值进行进一步计算。我可以手动设置列和行的值来获取上述交叉点中的值,但我无法将它们链接到两个表。

payoffTable

payoffTable

我需要进行的计算将填充 inTable 中的以下列: “revenueEZ”“revenueNEZ”“all_pay”“by_use”“not_paying” “by_use_sharing”

为简单起见,我将在 excel 代码中显示计算

revenuesEZ: =D5*$D$3
revenuesNEZ: =IF(E5>0,E5*$E$3, IF(E5=0,0,""))
all_pay: =IF(C5>0,F5-$C$3+G5,F5+G5) # note that the value in C3 is fix (=10)
by_use: =IF(C5>0,F5-$C$3+G5,"")
not_paying: =IF(C5=0,G5,"")
by_use_sharing: =+IF(C5=1,I$13/K$14, "")

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:1)

请先查看http://sqlfiddle.com/#!6/d81fc/11/0。您需要计算总和并查找变量,然后将其应用于更新计算。