私はROW_NUMBER(のようなものは何もありません知っている)OVER ... SQLiteので、私はCROSS APPLYに似た何かについて何かを見つけることができません。
CROSS APPLYに相当するものがある場合は、次のことができます。 (編集:私は学校が複数のチームを持つことができるという要件に気付きました。この解決策は、1チームにつき1チームしか働かないことになります。私の知る限りでSQLiteで利用可能)
もしそうでなければ、whileループとtempテーブルを使用してこれを埋める必要があります。その場合、SQLを使用することで実際の利益は得られません。コードルートに進むことをお勧めします。
編集: ただし、これは要求された一時テーブルソリューションです。もしあなたが学校内で複数のチームを持っている可能性があるので
CREATE TABLE #SchoolList
(Id INT IDENTITY(1,1), School VARCHAR(50))
INSERT INTO #SchoolList
SELECT DISTINCT School
FROM TeamTable
CREATE TABLE #TeamList
(TeamNumber INT IDENTITY(1,1), Pos INT, Name VARCHAR(50),
School VARCHAR(50))
DECLARE @CurrentSchool VARCHAR(50), @CurrentSchoolPos INT
DECLARE @CurrentSchoolLookupId INT
SET @CurrentSchoolId = 1
WHILE EXISTS (SELECT 1 FROM #SchoolList WHERE Id > @CurrentSchoolLookupId)
BEGIN
SELECT @CurrentSchool = School FROM #SchoolList
WHERE Id = @CurrentSchoolLookupId
SET @CurrentSchoolPos = SELECT TOP 1 Pos FROM TeamTable
WHERE School = @CurrentSchool
ORDER BY POS
WHILE ISNULL(@CurrentSchoolPos, 0) > 0
BEGIN
INSERT INTO #TeamList
SELECT Pos, Name, School
FROM TeamTable
WHERE School = @CurrentSchool AND Pos = @CurrentSchoolPos
SET @CurrentSchoolPos = SELECT TOP 1 Pos FROM TeamTable
WHERE School = @CurrentSchool
AND Pos > @CurrentSchoolPos ORDER BY POS
END
SET @CurrentSchoolLookupId = @CurrentSchoolLookupId + 1
END
SELECT * FROM #TeamList
(私は前に無視し、CROSSを確認するために編集された再帰CTEとROW_NUMBER、なしでは動作しませ溶液を塗布せていた何かを)内部しばらく必要
正確に4または> = 4? –