Aufsummierung

17/08/2008 - 21:51 von ludwig Königbauer | Report spam
Hallo,
ich lerne und schlage mich gerade mit MSSQL 2005 herum.
jetzt wollteich,die Tabelle Qu08(erste Tabelle unten) nach den Artikel so
zusammensortieren,dass
nach Aufsummierung der Artikel je Quartal in der zweiten Tabelle
entzsptrechend den Quartalen die
Erhöhung abgelesen und verglichen werden kann.
wie kann man das machen;ich probier schon die ganze Zeit herum,komme aber
auf keinen
grünen Zweig.Ich kriege jeweils die gesamt Summe für jedes Quartal.
Oder geht das überhaupt über die nachfolgende zweite Codeanweisung;
Zur Verdeutlichung habe ich auch die erste Abfrage mitgeschickt,die den
ersten Tabelleninhalt wiedergibt.
Kann mir jemand einen Lösungshinweis geben, wie man das machen kann.
Viele Grüße
Ludwig
SELECT Artikel,zahlung,CONVERT(varchar(20),anlage,104)as Datum
FROM Qu08
WHERE zahlung > 3000;

SELECT distinct Artikel,
Sum(zahlung) OVER(PARTITION BY Artikel) Summe,datepart(q,anlage)as
Quartal
FROM Qu08
WHERE zahlung > 3000;

Artikel zahlung Datum
330 3142,91 10.01.2008
510 4203,9 04.01.2008
330 4151,08 21.02.2008
510 4336,2 07.02.2008
310 3049,26 19.02.2008
330 5319,84 19.02.2008
110 4046,43 12.02.2008
330 3054,73 18.02.2008
330 4022,2 11.02.2008
100 3104,3 26.02.2008
530 3357,76 07.02.2008
110 3164,4 06.02.2008
790 3743,03 06.03.2008
110 3220,3 22.04.2008
310 3062,27 23.04.2008
330 4480,11 22.04.2008
310 3668,85 15.04.2008
510 3202 16.04.2008
310 4522,1 11.04.2008
310 4510,1 14.04.2008
790 3842,84 02.05.2008
330 4167,32 12.06.2008


Artikel Summe Quartal
100 3104,3 1
110 10431,13 1
110 10431,13 2
310 18812,58 1
310 18812,58 2
330 28338,19 1
330 28338,19 2
510 1742,1 1
510 11742,1 2
530 3357,76 1
790 7585,87 1
790 7585,87 2
 

Lesen sie die antworten

#1 Christoph Ingenhaag
18/08/2008 - 09:42 | Warnen spam
Hi Ludwig,

meintest du das?

create table #Qu08
(
Artikel int
,Zahlung money
,Datum datetime
)

set dateformat dmy
insert into #Qu08
select 330, 3142.91, '10.01.2008' union all
select 510, 4203.9, '04.01.2008' union all
select 330, 4151.08, '21.02.2008' union all
select 510, 4336.2, '07.02.2008' union all
select 310, 3049.26, '19.02.2008' union all
select 330, 5319.84, '19.02.2008' union all
select 110, 4046.43, '12.02.2008' union all
select 330, 3054.73, '18.02.2008' union all
select 330, 4022.2, '11.02.2008' union all
select 100, 3104.3, '26.02.2008' union all
select 530, 3357.76, '07.02.2008' union all
select 110, 3164.4, '06.02.2008' union all
select 790, 3743.03, '06.03.2008' union all
select 110, 3220.3, '22.04.2008' union all
select 310, 3062.27, '23.04.2008' union all
select 330, 4480.11, '22.04.2008' union all
select 310, 3668.85, '15.04.2008' union all
select 510, 3202, '16.04.2008' union all
select 310, 4522.1, '11.04.2008' union all
select 310, 4510.1, '14.04.2008' union all
select 790, 3842.84, '02.05.2008' union all
select 330, 4167.32, '12.06.2008'

set dateformat ymd;

select
Artikel
,isnull([1], 0) [Quartal 1]
,isnull([2], 0) [Quartal 2]
,isnull([1], 0) - isnull([2], 0) Diff
from
(
select
Artikel
,Zahlung
,datepart(q,Datum) Quartal
from #Qu08
where
zahlung > 3000
) S
pivot
(
sum(Zahlung)
for Quartal in ([1], [2])
) P


drop table #Qu08

Vg
Christoph

Ähnliche fragen