Ada*_* Sh 0 sql sql-server greatest-n-per-group
我有一个包含3列的表:代码,年份,百分比.
我需要在2009年返回具有最低(最小)百分比的代码.在此之后,我还需要代码的名称,在我创建的其他表中存在.
我只想使用CREATE VIEW,但我不想这样做.
Select table.code, table.year, table.percentage, othertable.name
from table
inner join othertable on table.FKId = othertable.PKid
where year = 2009
and percentage =
(select min(percentage)
from table
where year = 2009)
Run Code Online (Sandbox Code Playgroud)
更新以包括othertable ...因为我们没有名字.
更新现在我们有表名...现在更新第3次,我知道年份是字符串.
Select E.Code, C.Name
From dbo.Exam E
inner join dbo.Course C
ON E.Code = C.Code
Where E.Year = '2009' and --<-- PROBLEM LIKELY HERE year was string not int.
E.Fail = (select MIN(E2.Fail)
from dbo.Exam E2 where E2.Year = '2009') --<--Don't forget here too.
Run Code Online (Sandbox Code Playgroud)
来自评论:示例数据:
INSERT INTO Exam VALUES(333,'2009',40)
INSERT INTO Exam VALUES(333,'2009',20)
INSERT INTO Exam VALUES(555,'2009',19)
INSERT INTO Exam VALUES(444,'2009',19)
INSERT INTO Exam VALUES(777,'2009',23)
INSERT INTO Exam VALUES(333,'2009',0)
INSERT INTO Course VALUES(111,'Name1',5)
INSERT INTO Course VALUES(333,'Name2',5)
INSERT INTO Course VALUES(444,'Name3',6)
INSERT INTO Course VALUES(555,'Name4',3)
INSERT INTO Course VALUES(777,'Name5',3)
INSERT INTO Course VALUES(999,'Name6',6)
Run Code Online (Sandbox Code Playgroud)
假设结果应该是Name2,5