mccookie Mester
08. februar 2021 - 14:55 Der er 4 kommentarer og
1 løsning

Udfordringer med valg af Nyeste post i et Cross Apply

Hej,

Jeg har lidt udfordringer med at trække en ønsket liste.... og har/havde måske en forventning om at TOP kunne hente den "nyeste" række pr. bruger.

select d.PkUserNumber, LastName, ds.PkDebTransaction, ds.UserBalance2, ds.starttime
from Users as d
cross apply
(select top 1  PkDebTransaction,starttime, UserBalance2 from DEBTransactions where d.PkUserNumber = FkUser and type = 12) as ds

Jeg fået et resultat med en linje pr. bruger, men hvor jeg havde forventet at få den nyeste post med typen 12, så får jeg i stedet den ældste post.

PkDebTransaction er min primær nøgle og jeg "synes" den skulle tage den post med den højeste id pr. bruger.
wjens Guru
08. februar 2021 - 16:34 #1
TOP tager den første af de records du select'er, men de er ikke sorteret. Sikkert derfor du får den ældste. Du må mangle en ORDER BY for at få det du vil.
mccookie Mester
08. februar 2021 - 22:55 #2
Yes - Det gjorde udslaget..... :-)

Jeg har forsøgt mig med en substring på starttime, da jeg kun ønsker de første 4 cifre, men den kommer med en fejlmelding ala....

select d.PkUserNumber, LastName, ds.PkDebTransaction, ds.UserBalance2, substring(ds.starttime,0,2), ds.type
from Users as d
cross apply
(select top 1  PkDebTransaction, substring(starttime,0,2), UserBalance2, Type from DEBTransactions where d.PkUserNumber = FkUser and type IN (3) order by EndTime desc) as ds



Msg 8155, Level 16, State 2, Line 52
No column name was specified for column 2 of 'ds'.
Msg 207, Level 16, State 1, Line 49
Invalid column name 'starttime'.
wjens Guru
09. februar 2021 - 09:31 #3
Ren gæt: prøv med "ds." foran starttime, som du har i første select.
wjens Guru
09. februar 2021 - 09:34 #4
Sorry, det må være "DEBTransactions." som er den tabel du søger i der skal foran.
mccookie Mester
09. februar 2021 - 15:30 #5
Løste det med at kalde det ekstra felt, og lave substrings i den

select d.PkUserNumber, LastName, ds.TID, ds.PkDebTransaction, ds.UserBalance2, ds.starttime, ds.type
from Users as d
cross apply
(select top 1  PkDebTransaction, starttime, substring(starttime,8,2) + '/' + substring(starttime,5,2) + '-' + substring(starttime,1,4) as TID, UserBalance2, Type from DEBTransactions where d.PkUserNumber = FkUser and type IN (3) order by EndTime desc) as ds
Ny bruger Nybegynder

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.

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
Efter vanskeligt år jagter aarhusianske Mjølner nu tocifrede vækstrater: Vil for alvor indtage Sjælland - her er planen
Interview: Efter et corona-plaget år er aarhusianske Mjølner Informatics nu klar til at trykke på speederen. Topchef Brian Gottorp Jeppesen forventer tocifrede vækstrater, der især skal hentes fra det sjællandske marked. Se hans plan for 2021 her.
Computerworld
Næste uge går det løs: Apple inviterer til event på utraditionel vis
Apples store event i næste uge blev afsløret af Siri før tid. Få overblik over, hvad Apple ventes af løfte sløret for.
CIO
Har du rost din mellemleder i dag? Snart er de uddøde - og det er et tab
Computerworld mener: Mellemledere lever livet farligt: Topledelsen får konstant ideer med skiftende hold i virkeligheden, og moden går mod flade agile organisationer. Men mellemlederen er en overset hverdagens helt med et kæmpe ansvar. Her er min hyldest til den ofte latterliggjorte mellemleder.
Job & Karriere
"Vi var nødt til at sige til dem, at I er nødt til at sende ham hjem nu, for han begynder at knække"
"Vi var nødt til at sige til dem, at I er nødt til at sende ham hjem nu, for han begynder at knække"
White paper
Ét klik kan lægge din virksomhed ned: Sådan bekæmper du mailtrusler
Mailbårne angreb er blandt de mest udbredte og ofte mest alvorlige cybertrusler. Dette whitepaper fra F-Secure giver overblik over, hvordan de mest udbredte mailbårne trusler fungerer, hvordan de detekteres – og hvordan du beskytter din organisation.