Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  4 789
Hei
Har drevet å set litt rundt nå, men har ikke funnet noen løsning.
Er det noen som her som kan si meg hvorfor dette ikke fungerer? Jeg får erroren: "Invalid column name 'RN'."

Kode

select T.ThreadId, P.PostId,
ROW_NUMBER() over(partition by T.ThreadId order by P.PostId desc) RN
from Forum_Posts as P
join Forum_Threads as T
on T.ThreadId = P.ThreadId
where RN = 1
order by P.PostId desc;
Om jeg kutter ut "where RN = 1" fungerer det fint og jeg får dette som resultat:

Kode

ThreadId PostId	RN
25	106	1
24	105	1
23	104	1
23	103	2
5	99	1
5	97	2
5	74	3
5	36	4
men jeg vil helst bare få en rad per tråd.
Prøv å spesifiser med <tabellnavn>.<kolonnenavn>
Men siden RN blir generert hører den vel ikke til noen tabell?
Tror ikke du kan bruke kolonne-aliaser i WHERE-clauser? (irriterende nok)

Hva om du prøver noe som ligner dette (mulig jeg er på feil jorde her, dog):

WITH C AS
(
select T.ThreadId AS TId, P.PostId AS PId,
ROW_NUMBER() over(partition by T.ThreadId order by P.PostId desc) AS RN
from Forum_Posts as P
join Forum_Threads as T
on T.ThreadId = P.ThreadId
order by P.PostId desc;
)
Select TId, PId, RN from C
ORDER BY PId DESC
Sist endret av 9ppel; 16. september 2013 kl. 13:51. Grunn: Mulig dette ble TSQL-spesifikt, kanskje, men kanskje et subquery kan brukes istedet
Ja, det fungerte. Takker så mye.