Jag har en tabell enligt nedan i MS SQL Server 2000: Expertpanelen har samrådit och säger bestämt att du skall byta definitionen timestamp med datetime - då skall det fungera. Hoppas panelen har rätt ;-) Hmm... Iofs. skulle det lösa vissa delar. Men det skulle göra att jag får exakt samma tid om jag lägger till flera poster samtidigt. Syftet med timestamp här är att posterna ska komma i exakt rätt ordning.Problem att formulera SQL-fråga
CREATE TABLE Queue (
GUID uniqueidentifier ROWGUIDCOL NOT NULL DEFAULT (newid()),
Site uniqueidentifier NOT NULL ,
Modified timestamp NOT NULL ,
CheckedOut bit NOT NULL DEFAULT (0)
)
GO
Informationen som matas in i den här tabellen är endast Site som är ett GUID nummer (flera likadana förekommer). Resterande fält genereras automatiskt.
Vad jag vill göra är följande:
1. Jag vill Sortera på [Modified] och därmed få de äldsta posterna överst.
2. Sedan vill jag plocka ut TOP 6 av dessa.
3. Nu kommer problemet: Jag vill endast ha en förekomst per [Site] bland mina TOP 6.
Har provat en del DISTINCT varianter men jag får det inte att fungera då alla kolumner måste vara exakt lika för att DISTINCT ska "ta". Dessutom tycks jag inte kunna sortera på någonting annat än de fält jag visar.
Provade att skapa en vy sorterad på [Modified] och sedan ställa en DISTINCT TOP 6 fråga mot den. Men då glömmer den tydligen bort sorteringen.
Några förslag? Det bästa vore om jag kunde få med mig alla fält.Sv: Problem att formulera SQL-fråga
Hälsningar
/PelleSv: Problem att formulera SQL-fråga
Men jag lyckades till slut ta fram en SELECT som fungerar som jag vill. Det tog bara några timmar :-) Här kommer den:
SELECT * FROM Queue WHERE Modified IN (
SELECT TOP 6 MIN(Modified) As Modified
FROM Queue
GROUP BY Site
ORDER BY Modified ASC)
ORDER BY Modified
Då får jag fram 6 poster som innehåller den äldsta posten för 6 olika sajter.
Tack i alla fall!