我有一张表Person
:
其中ID
为主键,Male
为男性总数,Female
为女性总数, Person_ID
列固定为 4,因此男性 + 女性的最大数量为 4(我们不必验证这一点)。
我需要在最后一列 Is_Valid
中插入/更新 Yes
或 No
的值,以确定记录是否有效。
逻辑是这样的:比如男女总数是3,那么人的ID就得有3个,或者男女总数是2,就得有2个人的ID数据。
所以记录ID 3和4是无效的,因为记录3 - 有2个人(1男1女)但是只有1个人ID,记录4有1个人(1女性)但是没有人完全没有 ID 数据。
我需要在 C# 代码中以编程方式执行此操作,但首先我想知道可以解决此问题的查询?
我一直在想的逻辑是:
- 遍历每一行
- 得到男性+女性的总和= a
- 以某种方式计算非空个人 ID 单元格 = b
- 如果 a == b 则插入 YES 否则插入 NO
我不知道如何编写查询(或存储过程),我想它会有点复杂。任何帮助将不胜感激。
最佳答案
UPDATE TABLE
SET Is_Valid = CASE WHEN (
Case when Person1_ID != '' or Person1_ID IS NOT NULL Then 1 else 0 end +
Case when Person2_ID != '' or Person2_ID IS NOT NULL Then 1 else 0 end +
Case when Person3_ID != '' or Person3_ID IS NOT NULL Then 1 else 0 end +
Case when Person4_ID != '' or Person4_ID IS NOT NULL Then 1 else 0 end ) != Male + Female THEN 'NO' ELSE 'YES' END
关于c# - 遍历记录并根据条件更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41401935/