我有一个需要帮助的编辑例程。我已将小于 10 的值编入名为“已编校的详细信息”的单行中。但是,在某些情况下,即使详细信息编辑列仍然小于 10,我必须返回并获取下一个最小数字以添加到编辑中,直到它大于 10。下一步是让我难过的事情。在我获取下一个最小值以进行编辑后,我需要删除导致此问题的行。问题是我此时没有数据集的自然键。
正在考虑在每个子集上使用光标,但如果可以的话,我想避免这种情况。
我有 2 张桌子正在使用。
#WorkingTable ( DashboardYear varchar()
, Institutition varchar()
, StudentLevel varchar()
, Field varchar()
, FieldDescription varchar()
, CountOfStudents varchar()
)
#RedactedValues( DashboardYear Varchar()
, Institution Varchar()
, StudetnLevel Varchar()
, Field Varchar()
, FieldDescription Varchar()
, CountOfStudents Varchar()
)
Insert INTO #RedactedValues
SELECT DashboardYear
, Institution
, StudetnLevel
, Field
, FieldDescription
, CountOfStudents
From #WorkingTable
WHERE (CAST(CountOfStudents AS INT) < 10 and CAST(CountOfStudents AS INT) > 0)
and Field = 'XXXX'
-- Find Next Lowest Value for each group and add to redacted total
UPDATE #RedactedValues
SET CountOfStudents = CAST(r.CountOfStudents AS INT) + CAST(nextValue.nextValueToRedact AS INT)
FROM
(SELECT DashboardYear
, Institution
, StudentLevel
, MIN(CAST(CountOfStudents AS INT)) AS nextValueToRedact
FROM #WorkingTable t
WHERE CAST(t.CountOfStudents AS INT) > 0
and t.Field <> 'XXXX'
and t.fieldDescription not like '%unknown'
GROUP BY DashboardYear, Institution, StudentLevel
) nextValue
JOIN #RedactedValues r
on r.DashboardYear = nextValue.DashboardYear
and r.Institution = nextValue.Institution
and r.StudentLevel = nextValue.StudentLevel
上面的内容非常适合为每组数据查找下一个最低整数值并将其正确添加到我的 detailsRedacted 行中。但我无法弄清楚如何回到最小值的行并将其设置为 0。
由于声誉限制,我还不能添加图像……所以我无法向您展示数据的样子。也因为它本质上是敏感的,我不能在任何地方发布数据。
查看上面的一组数据,details redacted 列只有 5。我可以得到这组 13 中的值并将其添加到 details redacted 中。但是因为我只有 DashboardYear、Institution 和 StudentLevel 作为键,所以我无法访问定义导致编辑的单行所需的字段。
我只想做一个 update countofstudent = 0 select min(countofStudents) group by 子句并完成..但这并没有削减它。
希望有一个我还没有见过的忍者技巧可以帮助我。抱歉,我没有发布任何代码,但不确定它会有所帮助..