【发布时间】:2021-06-16 18:44:31
【问题描述】:
我手头有一个有趣的任务,我正试图弄清楚如何去做。
假设我的表格中有以下数据:
Num1 Acct Amt Type1 Type2 AmtX AmtY AcctBadInd
X12 111 90 X 1 NULL NULL NULL
X12 222 -90 X 1 NULL NULL NULL
X12 333 90 X 1 NULL NULL NULL
Y33 111 75 Y 1 NULL NULL NULL
Y33 444 -75 Y 1 NULL NULL NULL
Z44 111 55 Y 1 NULL NULL NULL
Z44 111 55 Y 0 NULL NULL NULL
Z44 444 -65 Y 1 NULL NULL NULL
以下是几个示例。唯一需要注意的是,给定的 Num1 可以有任意数量的记录,但始终 >= 2。因此它可能是 2、3、4、5,并且相同的逻辑适用于所有情况。
-
验证所有
Type2=1记录的ABS(AMT)是否相同。如果所有 3 条记录都具有相同的 AMT,则该 Num1 为SET AMTX=ABS(AMT)。或者,如果Type1 was Y for X12- 那么我们将改为更新AmtY = ABS(AMT) -
Num1 = Y33- 在这种情况下,我们再次要验证ABS(AMT)与Type2=1相同。如果它们相等,那么因为Type1=Y,我们将设置AmtY =75 -
Num1=Z44- 在这种情况下,再次验证Type2=1的 ABS(AMT) 是否相同。如果不相等,则不要更新AmtY,而是设置AcctBadInd = 1
最终结果
Num1 Acct Amt Type1 Type2 AmtX AmtY AcctBadInd
X12 111 90 X 1 90 NULL NULL
X12 222 -90 X 1 90 NULL NULL
X12 333 90 X 1 90 NULL NULL
Y33 111 75 Y 1 NULL 75 NULL
Y33 444 -75 Y 1 NULL 75 NULL
Z44 111 55 Y 1 NULL NULL 1
Z44 444 -65 Y 1 NULL NULL 1
Z44 111 55 Y 0 NULL NULL NULL
我正在为此苦苦挣扎,我不希望得到答案,但至少希望得到提示或任何帮助,以便我可以继续前进。更重要的是,如果这可以以我想象的方式实现,而无需编写上帝知道有多少代码。
【问题讨论】:
标签: sql sql-server ssms