0

我正在尝试阅读一组学生记录(基于他们的 stateID)并确定他们是否获得了荣誉榜或高荣誉。如果它们都没有达到,则可以删除该 stateID 分组的整个记录​​。这就是我想出的关于遍历行的步骤:

  1. 代码需要像 StateID 一样读取每条记录。

  2. 如果它在 C 列中看到“N/A”,则删除该 StateID 的所有记录。该学生没有进入荣誉榜。

  3. 如果看到 'H' 和 'HH' 的组合,则输出 state ID 列,并在 Honors 列中输出 'H' 的值

  4. 如果它看到所有 'HH' 值,则输出 stateID 列和 Honors 列,值 'HH'。

这是要读取的数据的示例:

样本数据的图像

样本所需输出的图像

4

1 回答 1

0

这就是我要做的。我用 Temp 表来说明。我将示例数据用于演示并得到了预期的结果。

CREATE TABLE #TempTable (StateId varchar(5) ,Honors varchar(5)) 
INSERT INTO #TempTable(StateId, Honors)
values('AA', 'HH'), ('AA', 'N/A'), ('AA', 'N/A'), ('FFB', 'H'),
('FFB', 'HH'), ('BCE', 'N/A'), ('BCE', 'H'), ('AOR', 'H'), ('AOR','H'), ('EEE','N/A'), ('EEE','N/A'), ('YTI','HH'), ('YTI','HH')

-- delete all N/A records
DELETE FrOM #TempTable
where STateId in (select Distinct StateId from #TempTable
where Honors = 'N/A')

-- update HH and H to be H
update #TempTable
set Honors = 'H' 
where StateId in (select Distinct StateId from #TempTable
where Honors = 'H')

select Distinct *  from #TempTable

DROP TABLE #TempTable 
于 2015-12-07T21:14:46.447 回答