DinoMedlem sedan sep. 20011 914 inlägg Sql Server 2005.
DECLARE @items TABLE
(
ItemId int,
RowId int
);
INSERT INTO @items
SELECT i.Id, ROW_NUMBER() OVER(ORDER BY i.Priority)
FROM dbo.Item i
WHERE i.EntryDate BETWEEN @date1 AND @date2
SELECT i.* FROM Item i WHERE i.Id IN (SELECT ItemId FROM @items)
I INSERT INTO...SELECT så sker sorteringen korrekt men i nästa SELECT så försvinner den och sorterar istället efter i.Id. Någon som vet varför?
@ndersMedlem sedan juni 200032 969 inlägg Du anger ju inte order by i din SELECT, så du får tillbaka posterna i den ordning SQL Servern är mest bekväm med.
DinoMedlem sedan sep. 20011 914 inlägg Det var la trevligt då. Då sket det sig.
DECLARE @items TABLE
(
ItemId int,
RowId int
);
INSERT INTO @items
SELECT i.Id, ROW_NUMBER() OVER(ORDER BY i.Priority)
FROM dbo.Item i
WHERE i.EntryDate BETWEEN @date1 AND @date2
SELECT i.* FROM Item i WHERE i.Id IN (SELECT ItemId FROM @items) ORDER BY i.Priority
Kan du inte bara lägga till ORDER BY i.Priority på slutet?
DinoMedlem sedan sep. 20011 914 inlägg Ovan SP är väldigt nerskuren för att enkelt visa vad jag var ute efter. Den SP jag sitter med består av flera SELECT på varandra så jag hade hoppats att endast kunna göra ORDER BY en gång och sen var det bra. Men fick tillslut göra som ni säger och ha den i varje SELECT.
Rätta mig om jag har fel, men räcker det inte med att lägga ORDER BY-biten i den yttersta frågan, och helt utelämna ORDER BY i resten av frågan?
DinoMedlem sedan sep. 20011 914 inlägg Nej. I sådana fall hade jag inte skapat denna tråden. :)