Brauche Hilfe bei Berechnung von Prozent

17/12/2008 - 14:41 von Jo Michael | Report spam
Hallo,
ich steh grad total auf'm Schlauch und hab nicht mal ansatzweise eine Idee
wie ich
unten beschriebene Aufgabe lösen kann.

Ich hab folgende Tabelle:
ID Artikel PostingDate Summe
1 Art1 01.01.2006 5
2 Art1 01.04.2006 15
3 Art1 01.01.2007 10
4 Art1 01.08.2007 20
5 Art2 01.02.2006 5
6 Art2 01.04.2007 10
7 Art2 01.08.2007 5
usw...

Die Frage ist einfach formuliert:

Ich möchte wissen um wieviel Prozent der Umsatz pro Artikel im Vergleich zum
Vorjahr gestiegen/gesunken ist.
Wie ich die Summe bilde ist einfach:

select Artikel,
sum(Summe)as Summe,
Datepart(year,PostingDate) as Jahr
from myTable
group by
Artikel,
Datepart(year,PostingDate)


Ich hàtte als Ergebnis aber gern sowas wie:
Artikel Summe Jahr Prozent
= Art1 20 2006
Art1 30 2007 50%
Art2 5 2006
Art2 15 2007 200%

...oder so àhnlich. Ich hab keine Idee wie ich ein Statement schreibe das
mir Prozent mit Werten aus dem Vorjahr ausrechnet.



Wenn jemand eine Lösung oder ne ansatzweise kennt nur her mit.

Vielen Dank im voraus,
gruss,
Jo
 

Lesen sie die antworten

#1 Christoph Muthmann
17/12/2008 - 15:22 | Warnen spam
Jo Michael wrote:
Hallo,
ich steh grad total auf'm Schlauch und hab nicht mal ansatzweise eine
Idee wie ich
unten beschriebene Aufgabe lösen kann.
[snip]
Die Frage ist einfach formuliert:

Ich möchte wissen um wieviel Prozent der Umsatz pro Artikel im
Vergleich zum Vorjahr gestiegen/gesunken ist.



Hi Jo,
das wàre ein Hinweis, oder?

create table #myTable(ID int, Artikel varchar(10), PostingDate datetime,
Summe decimal(10));

insert into #myTable(ID, Artikel, PostingDate, Summe) values(1, 'Art1',
'20060101', 5);
insert into #myTable(ID, Artikel, PostingDate, Summe) values(2, 'Art1',
'20060401', 15);
insert into #myTable(ID, Artikel, PostingDate, Summe) values(3, 'Art1',
'20070101', 10);
insert into #myTable(ID, Artikel, PostingDate, Summe) values(4, 'Art1',
'20070801', 20);
insert into #myTable(ID, Artikel, PostingDate, Summe) values(5, 'Art2',
'20060201', 5);
insert into #myTable(ID, Artikel, PostingDate, Summe) values(6, 'Art2',
'20070401', 10);
insert into #myTable(ID, Artikel, PostingDate, Summe) values(7, 'Art2',
'20070801', 5);

Select *
from #myTable;


Select a.*, (a.Summe-b.Summe)/b.Summe * 100 as Prozent
from
(
select Artikel,
sum(Summe)as Summe,
Datepart(year,PostingDate) as Jahr
from #myTable
group by
Artikel,
Datepart(year,PostingDate)
) a
left join
(select Artikel,
sum(Summe)as Summe,
Datepart(year,PostingDate) as Jahr
from #myTable
group by
Artikel,
Datepart(year,PostingDate)
)b
on a.Artikel = b.Artikel
and a.Jahr = b.Jahr+1;


go
drop table #myTable



Einen schönen Tag noch,
Christoph
Microsoft SQL Server MVP
http://www.insidesql.org

Ähnliche fragen