SQL如何读取一组记录,并根据读取的值输出一个较小的表



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

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

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

  3. 如果它看到"H"one_answers"HH"的组合,则输出状态ID列,并在荣誉列中输出"H"的值

  4. 如果它看到所有的"HH"值,则输出stateID列和荣誉列,即"HH的值"。

以下是要读取的数据示例:

样本数据图像

样本所需输出的图像

下面是我要做的。我用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 

最新更新