如果familyID不是4的倍数,则在SQL表中创建虚拟填充行,以使其成为4的倍数

如果familyID不是4的倍数,则在SQL表中创建虚拟填充行,以使其成为4的倍数,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要帮助向SQL表添加虚拟填充行。该表包含带有FamilyID的家庭卡,但我需要为不包含FamilyID的家庭添加填充符 下面是一个例子。我主要是想添加填充行来保留familyID,以确保每个族都是4的倍数 如果家庭有3个ppl,我将添加1个填充物 4 ppl什么也不做 5 ppl添加3种填料 1 ppl添加3种填料等 +----------+-----------+----------+ | FamilyID | FirstName | LastName | +----------+----

我需要帮助向SQL表添加虚拟填充行。该表包含带有FamilyID的家庭卡,但我需要为不包含FamilyID的家庭添加填充符

下面是一个例子。我主要是想添加填充行来保留familyID,以确保每个族都是4的倍数

如果家庭有3个ppl,我将添加1个填充物 4 ppl什么也不做 5 ppl添加3种填料 1 ppl添加3种填料等

+----------+-----------+----------+
| FamilyID | FirstName | LastName |
+----------+-----------+----------+
| 1234     | Janet     | Roberts  |
+----------+-----------+----------+
| 1234     | Kevin     | Roberts  |
+----------+-----------+----------+
| 1234     | DUMMY     | DUMMY    |
+----------+-----------+----------+
| 1234     | DUMMY     | DUMMY    |
+----------+-----------+----------+
| 3423     | Adam      | Lake     |
+----------+-----------+----------+
| 3423     | DUMMY     | DUMMY    |
+----------+-----------+----------+
| 3423     | DUMMY     | DUMMY    |
+----------+-----------+----------+
| 3423     | DUMMY     | DUMMY    |
+----------+-----------+----------+
| 1111     | April     | Lo       |
+----------+-----------+----------+
| 1111     | Randy     | Lo       |
+----------+-----------+----------+
| 1111     | Abby      | Lo       |
+----------+-----------+----------+
| 1111     | Ray       | Lo       |
+----------+-----------+----------+
| 1111     | Sandra    | Lo       |
+----------+-----------+----------+
| 1111     | DUMMY     | DUMMY    |
+----------+-----------+----------+
| 1111     | DUMMY     | DUMMY    |
+----------+-----------+----------+
| 1111     | DUMMY     | DUMMY    |
+----------+-----------+----------+

我明白了。我不确定您是否需要
选择
查询或
插入
。以下内容将生成额外的行:

select familyid, 'DUMMY', 'DUMMY'
from (select familyid, count(*) as cnt
      from t
      group by familyid
     ) t join
     (values (1), (2), (3)) as n(n)
     on (cnt % 4) <= 4 - n.n
where cnt % 4 > 0;

你能澄清一下你的问题吗?更多的样本数据和预期的结果可能会有所帮助。你说“如果家庭是7 ppl,我会加1”你能添加这个样本吗output@MJH我添加了更多的数据。@Zaynulabadinthin我做了一个,如果一个家庭是5个ppl,它需要3个Dummy才能成为8。这听起来像是XY问题。这可能是因为您想以某种方式格式化它吗?这里真正的问题是什么?我想要一个插页!如果您有一个familyID行,这将创建一个额外的行,而不是3个。@SQL\M。算术失败了。“我已经找到答案了。”戈登林诺夫说得不错。我尝试了一种在族表上使用rownumber的方法,并将其与带有数字的基表进行比较,但无法使其工作。加1。@GordonLinoff为了完整起见,内部需要一个GroupByFamilyID。
insert into t(FamilyId, FirstName, LastName)
    select familyid, 'DUMMY', 'DUMMY'
    from (select familyid, count(*) as cnt
          from t
          group by familyid
         ) t join
         (values (1), (2), (3)) as n(n)
         on (cnt % 4) <= 4 - n.n
    where cnt % 4 > 0;