Det finns alltså ytterligare kolumner i resultatsetet?
C1 C2 C3
-----------
2 A 2
2 A 1
?
Vilket värde från C3 vill du ha? Har jag fel eller har jag fel?
Databaser & SQLur Databashanterare & SQL
6 svar · 423 visningar · startad av inspiro
Hej! Lite förenklat så ser resultatet jag hämtar ut från två tabeller så här (det finns fler kolumner där varje rad är unik, därför fungerar inte distinct):
Kol 1 Kol 2
1 A
2 A
2 A
1 B
2 B
3 B
2 C
2 C
2 C
Men jag skulle vilja att det såg ut så här:
Kol 1 Kol 2
1 A
2 A
1 B
2 B
3 B
2 C
Alltså att samma id i kolumn 1 inte får förekomma mer än en gång där kolumn 2 innehåller A, inte mer än en gång där kolumn 2 innehåller B osv... någon som förstår vad jag är ute efter?
Använder sql server, och det är när jag joinar ihop två tabeller som det blir fel.
Det finns alltså ytterligare kolumner i resultatsetet?
C1 C2 C3
-----------
2 A 2
2 A 1
?
Vilket värde från C3 vill du ha? Har jag fel eller har jag fel?
Ja, fler kolumner... och det spelar ingen roll vilket värde från kolumn 3 som kommer med i det här fallet, typ den första bara. I ditt exempel skulle jag alltså bara vilja få ut "2 A 2" men få bort den andra. Tänkte alltså om det går att använda DISTINCT på en del av kolumnerna!
Nej, det kan du inte göra, men du kan använda en GROUP BY och kasta dit aggregatfunktioner på de övriga kolumnerna, men då kan du inte veta från vilken rad de kommer (det kan variera mellan kolumnerna)
SELECT C2,C2,MAX(C3) as C3 FROM tabellen GROUP BY C1,C2
Ok, tack, jag ska nog ändra lite i strukturen, det är antagligen feltänk från början. En annan fråga i lite av samma ämne... jag försöker göra det här:
SELECT DISTINCT TOP (3) X
FROM Y
ORDER BY DateTime
Om man tar med "DateTime" i selecten så fungerar själva frågan, men då blir den ju inte distinct eftersom varje "DateTime" är unik. Vet ni hur man kan göra istället? Vill alltså att X ska vara unikt.
select top 3 x,max(datetime) as obsequent
from y
group by x
order by obsequent desc
Tack, LarsG! Du är ju helt otrolig på sql... :)