Hej! Jag har en db med företags räkenskapuppgifter, d v s omsättning, resultat, balansomsluning och antal anställda.
Företagen rapporterar in nya uppgifter varje kvartal.
Varje kvartal tillkommer det nya företag, så antalet företag som rapporterat på kv 1 2001 är färre än de som rapporterat på kv 1 2002.
M h a lite kod i klienten och SQL trycks det hela ut i Excel så att det ser ut som bifogad fil beskriver.
Problemet är att det är svårt att jämföra kv 1 2001 med kv 1 2002 eftersom det är 20 företag i ena kvartalet och bara 10 i andra. Den procentuella omsättningsökningen blir förstås missvisande.
Så jag behöver göra urvalet så att bara de företag som har rapporterat in värden för både kv 1 2001 och kv 1 2002 skall vara med.
Tänker vi ett steg längre (betrakta filen så blir det lättare att förstå) så vill jag bara i rapporten ha med de företag som rapporterat in på samtliga kvartal. Det är först då rapporten blir
riktigt vettig.
Och det är nu jag behöver hjälp, först måste jag fråga vilka db:n vilka företag som rapporterat in på samtliga kvartal (under en given tidperiod). Men hur göra detta? Sedan tänkte jag använda detta frågeresultat för att kunna köra rapporten på vanligt sätt. Frågan är lite hur jag nu går vidare...
Tabellen med företagsdata är enkel och ser ut såhär:
FöretagsDataID ID
Företag -char
År -int
Period -int
Omsättning int-
Anställda int-
resultat int-
balansomslutning -int
En principlösning eller lite sqlexempel vore trevligt....
filen, spara som .xls annars blir det fult
LarsGMedlem sedan dec. 200012 464 inlägg t.ex. ta fram id för företag som rapporterat de fyra senaste perioderna
select FöretagsDataID from företagsdata
where (år = 2001 and period in (4))
or (år = 2002 and period in (1,2,3))
group by FöretagsDataID
having count(*) = 4
tack för snabbt svar, skall testa ikväll
Hmm, jag får inte din SQL-sats att funka. Dessutom förstår jag den inte riktigt. Kan du möjligen komplettera/förklara?
LarsGMedlem sedan dec. 200012 464 inlägg På vilket sätt fungerar det inte?
Tanken är att frågan skulle returnera de företagsid där det finns poster för de perioder som anges. I det här fallet så var det för period 3 år 2001 och period 1 tom 3 år 2002. När jag tittade på ditt exempel så såg jag att det inte fanns något data för period 3 år 2002 så det är kanske därför ...
Jag tror jag förstått varför jag inte fick några värden. Måhända var jag lite otydlig. FöretagsDataID är en räknarpost för varje rapportering och betecknar inte ett företag. 'Företag' representerar dock ett enskilt företag.
Din kod:
select FöretagsDataID from företagsdata
where (år = 2001 and period in (4))
or (år = 2002 and period in (1,2,3))
group by FöretagsDataID
having count(*) = 4
ändrade jag till:
select [b]Företag[/b] from företagsdata
where (år = 2001 and period in (4))
or (år = 2002 and period in (1,2,3))
group by [b]Företag[/b]
having count(*) = 4
och nu verkar det stämma! Tack så mycket för hjälpen. Utan dig hade det aldrig gått.