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