我有一个带有以下内容的临时表(该表有1064条记录,其中包含25种不同的RevID。每个RevID当前列在表中,计数在30-55倍之间。每个DegreeNo在表中4次并且要求一个不同的RevID。目标是让表中的每个RevID具有相同的次数。在这种情况下,每个RevID的计数应为22。
目标:1。将RevID分配给DegreeNo,其中Major不等于short_plan 2. RevID只能分配22次。
TempNomTable
**RevID DegreeNo Major**
UF1 12345678 SOCIOL
UF3 12345678 SOCIOL
UGK 12345678 SOCIOL
KHS 12345678 SOCIOL
UF25 01234555 DESIGN
UF6 01234555 DESIGN
UF1 01234555 DESIGN
UF3 01234555 DESIGN
#TempR TABLE
**RevID SHORT_PLAN**
UF1 DENTIST
UF2 VET
UF3 GUESS
UF4 HR
UF5 DESIGN
...
...
**DegreeNo Major comp_id**
12345678 SOCIOL 2
01234555 DESIGN 2
这是插入临时表的查询:
WITH Match_NWithR AS(
SELECT DISTINCT
DegreeNo,
RTRIM(Major) AS Major,
COUNT(1) as rowcnt,
comp_id
FROM #mult_nom
GROUP BY DegreeNo,
RTRIM(Major),
comp_id
)
, rownum_matches AS (
SELECT m.DegreeNo,
m.Major,
t.Revid,
m.rowcnt,
m.comp_id,
ROW_NUMBER() OVER (PARTITION BY m. DegreeNo order by newid()) AS rownum
FROM Match_NWithR m
join #tempR t ON t.short_plan != m.major
GROUP BY m.DegreeNo, m.Major,
t.RevID, m.rowcnt, m.comp_id
HAVING COUNT(t.RevID) <= 22
)
INSERT INTO #TempNomTable
SELECT RevID, DegreeNo, Major, comp_id FROM rownum_matches rm
WHERE rownum <= rowcnt
group by RevID, DegreeNo, Major, comp_id
HAVING COUNT(RevID) <= 22
我甚至尝试使用更新光标来更新RevID如果计数是&gt; 22但这也不起作用。任何建议将不胜感激。