Ik heb even zin in een
compleet FOUT antwoord, maar ik vond het een leuke uitdaging. Onder MS-SQL 2000 geeft de volgende code volgens mij de resultaten die jij zoekt:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| select top 25 * from
(
SELECT
(SELECT COUNT(*) FROM tbl975048 e2 WHERE e2.artiest <= e.artiest) AS rij,
Artiest,
Titel
FROM tbl975048 e
) kolom1,
(
SELECT
(SELECT COUNT(*) FROM tbl975048 e2 WHERE e2.artiest <= e.artiest) AS rij,
Artiest,
Titel
FROM tbl975048 e
) kolom2,
(
SELECT
(SELECT COUNT(*) FROM tbl975048 e2 WHERE e2.artiest <= e.artiest) AS rij,
Artiest,
Titel
FROM tbl975048 e
) kolom3,
(
SELECT
(SELECT COUNT(*) FROM tbl975048 e2 WHERE e2.artiest <= e.artiest) AS rij,
Artiest,
Titel
FROM tbl975048 e
) kolom4
where kolom1.rij=kolom2.rij-25 and
kolom1.rij=kolom3.rij-50 and
kolom1.rij=kolom4.rij-75
order by kolom1.rij |
Hierbij heb ik de volgende testdata gebruikt:
voor het maken van de tabel:
SQL:
1
2
3
4
5
| CREATE TABLE [Tbl975048] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Artiest] [varchar] (50),
[Titel] [varchar] (50)
) ON [PRIMARY] |
voor het vullen van de tabel:
SQL:
1
2
3
4
5
| WHILE (SELECT count(*) FROM tbl975048) < 150
BEGIN
INSERT INTO Tbl975048 ([Artiest], [Titel])
VALUES( convert(varchar(50), NEWID()), convert(varchar(50), NEWID()))
END |
met als eindresultaat de top 100 in 4 kolommen gesorteerd op artiest.
[DISCLAIMER]
Ik ben van mening dat dit de meest slechte oplossing is, en dat je de opmaak door je programma moet laten doen i.p.v. door het DBMS.
[/DISCLAIMER]