Avatar billede C_jorgen Juniormester
18. maj 2017 - 14:08 Der er 10 kommentarer og
1 løsning

Ønsker at udelade rækker hvor sum af kolonne med beløb er 0

Nedenstående forespørgsel virker fint. Men jeg kan ikke finde ud af at begrænse det til kun at medtage de rækker hvor kolonnen med summen (alias Lejsaldo) er forskellig fra 0.

select Sel,Afd,Lejemaal,Lejer,Navn,Adresse,Inddato,Fridato,isnull((select sum(belob) from lejtrans f where f.sel=lejer.sel and f.afd=lejer.afd and f.lejemaal=lejer.lejemaal and f.lejer=lejer.lejer),0) as Lejsaldo
from lejer inner join interessentadresse ia on ia.interessentnr = lejer.interessentnr where Tomgang='J'
and sel = 1 and afd not in (2,9,127)
GROUP BY Sel,Afd,Lejemaal,Lejer,Navn,Adresse,Inddato,Fridato
Avatar billede michael_stim Ekspert
18. maj 2017 - 14:52 #1
...and f.lejemaal=lejer.lejemaal and f.lejer=lejer.lejer AND SUM(belob) > 0), 0)...

Måske
Avatar billede acore Ekspert
18. maj 2017 - 15:34 #2
Måske tilføje

... HAVING Lejsaldo <> 0

Ikke sikker på, om det duer i MSSQL, men i MySQL burde det være ok.
Avatar billede michael_stim Ekspert
18. maj 2017 - 15:46 #3
HAVING er standard SQL, så det burde det.
Avatar billede acore Ekspert
18. maj 2017 - 15:51 #4
michael_stim: Hvor finder jeg gældende MSSQL dokumentation. Kender du et sted i lighed med mysql.com?
Avatar billede michael_stim Ekspert
18. maj 2017 - 15:53 #5
#4
Har ikke siddet med MSSQL siden jeg läste til systemudvikler i 90'erne ;-) Men et eller andet sted på Microsofts sider må det vel findes.
Avatar billede michael_stim Ekspert
18. maj 2017 - 15:56 #6
Avatar billede acore Ekspert
18. maj 2017 - 16:03 #7
Tak - det førte mig til https://docs.microsoft.com/en-us/sql/t-sql/queries/select-having-transact-sql.

Bliver egentlig lidt usikker på, om det går med Lejsaldo i en HAVING - de gør det modsatte i begge de to eksempler.

C_jorgen: Du bliver nødt til at prøve det
Avatar billede C_jorgen Juniormester
19. maj 2017 - 11:44 #8
Hej Michael og Acore. Jeres forslag havde jeg prøvet og mange andre forsøg desværre.

Michael: An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference

Acore: Invalid column ´Lejsaldo´
Avatar billede acore Ekspert
19. maj 2017 - 12:02 #9
Tænkte det nok. Hvis man skal følge terminologien i eksemplet, skal du så tilføje

... HAVING (isnull((select sum(belob) from lejtrans f where f.sel=lejer.sel and f.afd=lejer.afd and f.lejemaal=lejer.lejemaal and f.lejer=lejer.lejer),0) ) <> 0

Desværre kan jeg ikke teste, så jeg famler lidt
Avatar billede C_jorgen Juniormester
19. maj 2017 - 12:53 #10
Acore det ser ud til at virke. Så kan jeg arbejde videre med om den samlede forespørgsel er som jeg ønsker. Mange tak den har virkelig drillet det er en kæmpe hjælp.
Avatar billede acore Ekspert
19. maj 2017 - 13:34 #11
Det var godt - og lidt heldigt - jeg mener det var lidt et langskud fra min side ;)
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

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