Jag har en tabell med olika tävlingar och en med tävlingsresultat. Hej! Hej Daniel, Hej!Lägga till en räknare till ett fält i en tabell.
Jag behöver ta fram en rankingtabell med
Namn placering tävling1, placering tävling2 osv. upp til tävling 7 sedan totalrankingpoäng.
Problemet är ifrån resultattabellen så stänner inte kriteriet placering eftersom jag sorterar bort
Utlänska spelare och damer i detta fall.
eg vill jag få ut allt i en och samma Query.
1 Martin Paulsson Kulladals BS 135 220 250 200 81 82 0 968
2 Martin Larsen Pegamon BC 220 0 110 150 200 180 0 860
Det jag vet är placering i varje tävling men det värdet skall ändras uppåt om det förekommer
en utlänskspelare eller en dam före.
Exempel:
1 Spelare 1 250
2 Spelare 2 220
3 Spelare 3 200
4 Spelare 4 180
5 Spelare 5 165
Men egentligen så kom en utlänsk spelare på 3:e plats vilket gör att jag inte får tag i rätt poäng till
Spelare 4.
Så i min lista vill jag sortera bort spelare som inta är svenskar och
i detta fall inte är herrar. Men det viktiga är att placeringen kommer
med i listan så jag kan Joina den mot bo_Rank och få tag i Rankingpoängen.
Jag har gjort följande:
DECLARE @parmSex char(1)
DECLARE @parmTourStopNbr int
SET @parmSex = 'M'
SET @parmTourStopNbr = 1
DECLARE @TEMP TABLE (TsResultPlace int identity(1,1) ,TsStopNbr int, TsLicNbr char(12),TsName char(50),TsSex char(1))
INSERT @TEMP(TsLicNbr, TsName,TsStopNbr, TsSex)
SELECT l.LicNbr AS TsLicNbr, l.FirstName + ' ' + l.SurName AS TsName,c.TourStopNbr, l.Sex
FROM bo_Licence l
INNER JOIN bo_Result ts1 ON(ts1.ResultLicNbr = l.LicNbr)
INNER JOIN bo_Competition c ON(ts1.ResultId = c.Id AND ts1.ResultPlace >0 AND
(c.TourStopNbr = @parmTourStopNbr AND c.WorldCupRanking = 1 AND l.Country = 'SE'
AND ts1.ResultLicNbr <> 'INT000000001' AND l.Sex = @parmSex ))
ORDER BY ResultPlace
SELECT TsResultPlace, TsLicNbr, TsName,TsStopNbr,TsSex, RankPoints AS TsRankPoints
FROM @TEMP
INNER JOIN bo_Rank ON (TsResultPlace = RankPlace AND RankType = 'A')
Sv: Lägga till en räknare till ett fält i en tabell.
Jag är lite osäker på var som är problemet, men jag misstänker att det är att TsResultPlace är placeringen du pratar om, och eftersom du filterar bort ulänska retan i första frågan blir kolumnen
placeringsordningen för svenskar, inte placeringsordningen totalt.
Jag skulle föreslå att du lägger till landskod i @TEMP, och när du har fått rätt resultat filtrerar du bore utlänskla. Då får du med 1,2,4 (men inte 3) osv.
Hjälper det?
DanielSv:Lägga till en räknare till ett fält i en tabell.
Vad jag vill få ut är ett radnummer 1 - 100 oavsett om jag sorterat bort utlänningar och damer.
Alltså om det är en utlänsk spelare som kom på plats 3 så vill jag att den som kom 4 skall få placering 3 och inte 4 likaså om det kom en dam mellan två spelare som också kan vara en utlänsk spelare så skall alla svenska herrar få placeringen t.ex 1 - 100 om det är 100 poster jag få ut.
Hoppas detta förklarar bättre.Sv: Lägga till en räknare till ett fält i en tabell.
Det finns flera sätt att göra det på, men jag skulle helt enkelt rekommendera atta göra som du har gjort, spara resultatet i en temptabell eller tabellvariabel med identity(1,1)-kolumn.
Jag har vid något tillfälle, när jag vill göra något likande, och var tvungen att ha det i en fråga joinat tabeller med sig själv, och sedan gjort en sum på antal rader som hade lägre resultat, men det kräver duplicering av koden.
Så. absolut enklaste. Ta resultatet och sortera det i resultatordning, in i en tabell med idenity-kolumn..
Daniel