Avatar billede FewCastle Praktikant
14. januar 2015 - 10:41 Der er 4 kommentarer og
1 løsning

Case When problem

Jeg har en tabel ved navn AftaleYdelser.
Felter:
ContractNo = aftalenr
No = nr. på ydelsen (hvis der er 20 ydelser, vil No være fra 1-20
Payment = ydelsen i kr.
Collected = kan indeholde værdien 0 eller 1.
0 = ydelsen er ikke faktureret til kunden
1 = ydelsen er faktureret til kunden

Det jeg skal finde er:
Ud for hver ContractNo skal jeg have en ydelse ud fra følgende IF sætning:
Find den første ydelse hvor Collected = 0, hvis denne giver NULL så skal den finde højeste No hvor Collected = 1

Jeg håber jeg har forklaret problemet skarpt nok. Som skrevet i overskrift har jeg forsøgt mig med Case When uden held. Ved heller ikke om det er den rette løsning.
Mangler der oplysninger eller det er skrevet fuldstændig uklart forsøger jeg gerne igen :)
Avatar billede Slettet bruger
14. januar 2015 - 12:52 #1
select coalesce(
(select top(1) Payment
from tabel
where ContractNo = t1.ContractNo
  and Collected = 0
order by No
)
,
(select top(1) Payment
from tabel
where ContractNo = t1.ContractNo
  and Collected = 1
order by No desc
)) Ydelse
from
(select distinct ContractNo
from tabel
) t1
Avatar billede FewCastle Praktikant
14. januar 2015 - 13:12 #2
Tak for svar.
Umiddelbart når jeg ser sql-sætningen så giver den 2 felter med Payment.

Det jeg har behov for er kun en payment pr. aftalenr.

Ud for hver ContractNo skal jeg have éen ydelse ud fra følgende IF sætning:
Find den første ydelse hvor Collected = 0, hvis denne ikke findes så den giver NULL så skal den finde højeste No hvor Collected = 1. Ud fra denne IF sætning vil jeg kun en ydelse som enten er faktureret eller ej faktureret til kunden.

Giver det mening?
Avatar billede Slettet bruger
14. januar 2015 - 13:32 #3
Nej, du får kun ét felt. COALESCE tager første værdi hvis den ikke er NULL eller anden værdi.
Men der mangler select af ContractNo i første select.
Avatar billede FewCastle Praktikant
14. januar 2015 - 14:07 #4
Super...takker.
Jeg kommer først til at kigge på det i morgen og så vender jeg tilbage.
Avatar billede FewCastle Praktikant
16. januar 2015 - 09:44 #5
Tusind tak for hjælpen.
Så funker det hele...det fantastisk.
Avatar billede 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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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