server取出多个最小值 sql_sql-server

我有一个需要帮助的编辑程序。 我已将小于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。

由于声誉限制,我无法添加图片...因此无法向您显示数据的外观。 同样因为它本质上是敏感的,所以我无法在任何地方发布数据。

查看以上数据集,明细表中的明细栏只有5个。我可以得到这组13中的值,并将其添加到明细表中。 但是由于我仅将DashboardYear,Institution和StudentLevel作为关键字,所以我无法进入Field,而该字段用于定义促成编辑的单行。

我只想做一个更新countofstudent = 0 select min(countofStudents)group by子句并完成..但这并没有解决问题。

希望有一个我还没看过的忍者把戏能对我有所帮助。 抱歉,我没有发布任何代码,但不确定是否会有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值