16. april 2012 - 08:16Der er
3 kommentarer og 1 løsning
MS SQL - limit på UNION udtræk
Jeg har følgende Transact-SQL udtræk:
SELECT t.pkid,t.TicketType, t.TicketPrice, t.zoneFromId, t.zoneFromName, t.zoneToId, t.zoneToName, t.PurchaseTime, b.tlf, NULL AS Amount FROM Ticket t, Brugere b WHERE t.brugerId = b.id AND b.tlf = '38383838'
UNION
SELECT tt.pkid, NULL AS TicketType, NULL AS TicketPrice, NULL as zoneFromId, NULL AS zoneFromName, NULL AS zoneToId, NULL AS zoneToName, tt.PurchaseTime, b.tlf, tt.Amount FROM Brugere b, Transactions tt WHERE tt.brugerid = b.id AND b.tlf = '38383838' AND tt.TransactType = 'tankop' AND tt.Transact IS NOT NULL AND tt.dibstoken <> 'fejl'
ORDER BY PurchaseTime DESC
Jeg har brugt en UNION, for at kunne samle de to SELECT udtræk, og sortere på dem fælles.
Men nu vil jeg gerne kunne begrænse antallet af udtrukne poster, til fx de øverste 10 eller 20 af det samlede udtræk.
Det hele skal kunne være i en enkelt query, da det bliver kørt fra et ASP-script.
SELECT TOP 10 * FROM ( SELECT t.pkid,t.TicketType, t.TicketPrice, t.zoneFromId, t.zoneFromName, t.zoneToId, t.zoneToName, t.PurchaseTime, b.tlf, NULL AS Amount FROM Ticket t, Brugere b WHERE t.brugerId = b.id AND b.tlf = '38383838'
UNION
SELECT tt.pkid, NULL AS TicketType, NULL AS TicketPrice, NULL as zoneFromId, NULL AS zoneFromName, NULL AS zoneToId, NULL AS zoneToName, tt.PurchaseTime, b.tlf, tt.Amount FROM Brugere b, Transactions tt WHERE tt.brugerid = b.id AND b.tlf = '38383838' AND tt.TransactType = 'tankop' AND tt.Transact IS NOT NULL AND tt.dibstoken <> 'fejl' ) A ORDER BY A.PurchaseTime DESC
Vidste godt at det sikkert var simpelt, kunne bare ikke huske hvordan, og Google gav ikke gode resultater på det jeg søgte efter ;-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.