【发布时间】:2016-12-30 19:50:04
【问题描述】:
我有一张桌子Person:
其中ID是主键,Male是男性总数,Female是女性总数,Person_ID列固定为4,所以男性+女性的最大数量是4 (我们不必对此进行验证)。
我需要将Yes 或No 的最后一列Is_Valid 值插入/更新,以确定记录是否有效。
逻辑如下:例如男性和女性的总数为 3,则必须有 3 个人员 ID,或者如果男性和女性的总数为 2,则必须有 2 个人员 ID 数据。
所以记录 ID 3 和 4 是无效的,因为记录 3 - 有 2 人(1 男 1 女)但只有 1 人 ID,记录 4 有 1 人(1 女)但没有人ID 数据。
我需要在 c# 代码中以编程方式执行此操作,但首先我想知道可以解决此问题的查询?
我一直在想的逻辑是:
- 遍历每一行
- 得到男性 + 女性的总和 = a
- 以某种方式计算非空人员 ID 单元格 = b
- 如果 a == b 则插入 YES,否则插入 NO
我不知道如何编写查询(或存储过程),我想它会有点复杂。任何帮助将不胜感激。
【问题讨论】:
-
personid列是固定4列吗?
-
@ShakeerMirza 是的
-
我认为如果您对数据进行规范化会更好,这样您就可以拥有一个主表和一个辅助表,而不是四个 Person_Id 列,其中包含以下列:Id、fkey to primary表,男(位),女(位),Person_Id。然后所有四个(或许多)记录将指向主表中的同一记录。像这样固定所有值后,当您决定需要五个 Person_Id 时,您必须同时修改架构和查询。否则,Long 的答案应该有效。
标签: c# sql asp.net sql-server