Ich würde gerne eine Tabelle erstellen, in der die drei letzten Versionen jeder Frage angezeigt werden .
- I annehmen dass diese qversion mit der Zeit zunimmt. Wenn diese Annahme rückwärts gerichtet ist, entfernen Sie die
desc
Schlüsselwort aus der Antwort.
- Die Tabellendefinition hat keine explizite Nicht-Null-Beschränkung für qversion. I annehmen dass eine Null-Q-Version ausgeschlossen werden sollte. (Hinweis: Abhängig von den Einstellungen kann das Fehlen einer expliziten null/nicht null Angabe in der Deklaration zu einer nicht null Einschränkung führen). Wenn die Tabelle eine nicht-Null-Beschränkung hat, dann wird der Text
where qversion is not null
sollten entfernt werden. Wenn qversion Null sein kann und Nullen in der Ergebnismenge enthalten sein müssen, sind zusätzliche Änderungen erforderlich.
CREATE TABLE #temp (
id int,
num int,
question varchar(50),
qversion int );
INSERT INTO #temp VALUES(1, 1, 'Question 1 v1', 1);
INSERT INTO #temp VALUES(2, 1, 'Question 1 v2', 2);
INSERT INTO #temp VALUES(3, 2, 'Question 2 v1', 1);
INSERT INTO #temp VALUES(4, 2, 'Question 2 v2', 2);
INSERT INTO #temp VALUES(5, 2, 'Question 2 v3', 3);
INSERT INTO #temp VALUES(7, 2, 'Question 2 v4', 4);
-- ^^ Added so at least one row would be excluded.
INSERT INTO #temp VALUES(6, 3, 'Question 3 v1', 1);
INSERT INTO #temp VALUES(8, 4, 'Question 4 v?', null);
select id, num, question, qversion
from (select *,
row_number() over (partition by num order by qversion desc) as RN
from #temp
where qversion is not null) T
where RN <= 3