Just nu i M3-nätverket
Gå till innehåll

Hitta felet


Jensej

Rekommendera Poster

Hejsan!

 

Det är sa att jag i min SELECT vill fa fram total omsättning per manad för aret 2012. Jag far fram det resultatet jag vill förutom att jag saknar fält för Oktober, November, December som självklart är NULL i nuläget.

 

Min fraga är nu vad maste jag ändra för att kunna fa med dom sista tre manaderna i mitt svar?

 

 

 

 

 

post-52478-0-42344200-1349253950_thumb.jpg

 

 

 

Vill alltsa att det ska sta

 

Saldoc_texturnover Kalender_Year Kalender_MonthName

NULL eller 0 2012 Oktober

NULL eller 0 2012 November

NULL eller 0 2012 December

 

pa slutet av mitt svar.

 

Tack pa förhand

Länk till kommentar
Dela på andra webbplatser

Är det säkert att dina månader finns med i alla tabeller. Om sista kvartalet är null i SalDoc så borde dom komma med. Men om dom inte finns i Kalender så kommer dom inte med alls då du joinar på Kalender.Date.

 

Antagligen kan du prova med att göra en IsNull(SalDoc_texturnover, 0) för att få ut en nolla i det fältet där det är null. Eller prova att göra en outer join och se om det hjälper. En outer join kommer plocka med sig allt i en tabell och sätta null på de rader som inte har en motsvarande rad i den andra tabellen.

Länk till kommentar
Dela på andra webbplatser

Är det säkert att dina månader finns med i alla tabeller. Om sista kvartalet är null i SalDoc så borde dom komma med. Men om dom inte finns i Kalender så kommer dom inte med alls då du joinar på Kalender.Date.

 

Antagligen kan du prova med att göra en IsNull(SalDoc_texturnover, 0) för att få ut en nolla i det fältet där det är null. Eller prova att göra en outer join och se om det hjälper. En outer join kommer plocka med sig allt i en tabell och sätta null på de rader som inte har en motsvarande rad i den andra tabellen.

 

 

I SalDoc har jag bara DocDate med datum och där ligger inga ordrar efter 2012-09-24. är det därför okt,nov,dec inte kommer med? I sana fall finns det nagot sätt att modifiera koden sa att dom ända kommer med?

 

Outer Join ger exakt samma resultat.

 

Kalender tabellen har alla dagar/manader/ar/kvartal för flera ar framöver.

Länk till kommentar
Dela på andra webbplatser

Japp. Om du inte har ordrar på de aktuella datumen så är det nog anledningen till att de inte kommer med. Och då borde en right outer join hjälpa. Tycker jag åtminståne.

Länk till kommentar
Dela på andra webbplatser

Japp. Om du inte har ordrar på de aktuella datumen så är det nog anledningen till att de inte kommer med. Och då borde en right outer join hjälpa. Tycker jag åtminståne.

 

 

 

post-52478-0-60928000-1349257757_thumb.jpg

 

 

Hjälper inte :S

Länk till kommentar
Dela på andra webbplatser

AHA! Vad händer om du i din where sats ändrar att titta på Kalender_Year = '2012'?? Då borde du få med sista kvartalet i Kalender-tabellen.

Länk till kommentar
Dela på andra webbplatser

AHA! Vad händer om du i din where sats ändrar att titta på Kalender_Year = '2012'?? Då borde du få med sista kvartalet i Kalender-tabellen.

 

post-52478-0-41246500-1349258947_thumb.jpg

 

Funkar men nu uppkommer ett nytt problem.

Jag maste ha med

 

WHERE Saldoc.SalProcLevelCd = 4

 

för att kunna solla bort saker som inte ska räknas med i omsättningen. Väljer jag att spara denna where sats sa far jag upp det gamla resultatet igen..

 

btw tack för din hjälp!

Länk till kommentar
Dela på andra webbplatser

Vad händer om du kompletterar med WHERE Saldoc.SalProcLevelCd = 4 OR Saldoc.SalProcLevelCd IS NULL ??

 

Har provat att komplettera med detta pa olika ställen bade i början och i slutet av WHERE satsen och bada resultaten funkar inte.

 

post-52478-0-61931200-1349263594_thumb.jpg

 

post-52478-0-51934000-1349263618_thumb.jpg

Länk till kommentar
Dela på andra webbplatser

Då man blandar AND och OR bör man vara lite försiktig, att använda paranteser skadar inte.

A and B or C är samma sak som ( A and B ) or C. Men det som du vill göra är A and ( B or C ).

 

Som ni redan noterat får villkor på "outer"-tabellen i WHERE-clausen lite annorlunda konsekvenser. Testa gärna att flytta sådana villkor till ON-clausen, och fundera samtidigt på varför IS NULL behövs i det ena fallet men inte i det andra.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...