Hallo!
Vom PostgreSQL habe ich zwar keine Ahnung, aber ich habe dir mal exemplarisch was für den MSSQL-Server geschrieben. (TABELLE ist der Name der Eingangstabelle!)
Ich habe 2 Lösungen. Die erste geht direkt über 2 SELECT´s und ist evtl. sogar übernehmbar (sollte dann aber in eine Sicht etc. rein...):
---------ANFANG
select 'Name / Datum' as 'Name',
CONVERT(char(10), DATEADD(dd, - 2, GETDATE()), 104) as Vorgestern,
CONVERT(char(10), DATEADD(dd, - 1, GETDATE()), 104) as Gestern,
CONVERT(char(10), DATEADD(dd, - 0, GETDATE()), 104) as Heute
union all
Select distinct [Name],
(Select case when sum(Wert) is null then '0' else convert(varchar(20),sum(Wert)) end as Wert from TABELLE where [Name]=[DatenbasisNamen].[Name] and CONVERT(char(10), Datum, 104)=CONVERT(char(10), DATEADD(dd, - 2, GETDATE()), 104)),
(Select case when sum(Wert) is null then '0' else convert(varchar(20),sum(Wert)) end as Wert from TABELLE where [Name]=[DatenbasisNamen].[Name] and CONVERT(char(10), Datum, 104)=CONVERT(char(10), DATEADD(dd, - 1, GETDATE()), 104)),
(Select case when sum(Wert) is null then '0' else convert(varchar(20),sum(Wert)) end as Wert from TABELLE where [Name]=[DatenbasisNamen].[Name] and CONVERT(char(10), Datum, 104)=CONVERT(char(10), DATEADD(dd, - 0, GETDATE()), 104))
from TABELLE as [DatenbasisNamen]
---------ENDE
Die 2. geht über eine Funktion, ist also sehr wahrscheinlich nicht so übertragbar, gibt aber vielleicht einen Ansatz.
---------ANFANG
CREATE FUNCTION Auswertung()
RETURNS @retContactInformation TABLE([Name] varchar(255) not null,[Vorgestern] varchar(255) not null, [Gestern] varchar(255) not null,[Heute] varchar(255) not null)
AS
BEGIN
Insert into @retContactInformation
select 'Name / Datum',
CONVERT(char(10), DATEADD(dd, - 2, GETDATE()), 104),
CONVERT(char(10), DATEADD(dd, - 1, GETDATE()), 104),
CONVERT(char(10), DATEADD(dd, - 0, GETDATE()), 104)
Insert into @retContactInformation Select distinct [Name],
(Select case when sum(Wert) is null then 0 else sum(Wert) end as Wert from TABELLE where [Name]=[DatenbasisNamen].[Name] and CONVERT(char(10), Datum, 104)=CONVERT(char(10), DATEADD(dd, - 2, GETDATE()), 104)),
(Select case when sum(Wert) is null then 0 else sum(Wert) end as Wert from TABELLE where [Name]=[DatenbasisNamen].[Name] and CONVERT(char(10), Datum, 104)=CONVERT(char(10), DATEADD(dd, - 1, GETDATE()), 104)),
(Select case when sum(Wert) is null then 0 else sum(Wert) end as Wert from TABELLE where [Name]=[DatenbasisNamen].[Name] and CONVERT(char(10), Datum, 104)=CONVERT(char(10), DATEADD(dd, - 0, GETDATE()), 104))
from TABELLE as [DatenbasisNamen]
RETURN
END
die dan per
SELECT Name, Vorgestern, Gestern, Heute
FROM dbo.Auswertung()
abgefragt werden kann.
---------ANFANG
Das Resultat ist in beiden Fällen folgendes:
Name Vorgestern Gestern Heute
----------------------------------------------------------
Name / Datum 03.07.2008 04.07.2008 05.07.2008
Heike 0.00 0.00 0.00
Igor 10.00 1.00 0.00
Tom 7.00 0.00 0.00
Vielleicht hilft dir das ja weiter.
Eine kompaktere Lösung fällt mir nicht ein, aber funktionieren tut sie ;-)
Gruß
Matze