Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Frage zu select

6 views
Skip to first unread message

Chris Seidel

unread,
Sep 5, 2011, 12:32:15 PM9/5/11
to
Hallo,

ich möchte verschiedene berechnete Werte aus einer Tabelle (oder auch zwei
via Join) in einer Zeile anzeigen:

Spalte 1: sum(f1) where f2=1
Spalte 2: sum(f1) where f2=2

Ich hab jetzt null Plan, wie ich das in einem select hinbekommen könnte.
Geht das überhaupt?

Danke

Jörg Burzeja

unread,
Sep 5, 2011, 2:29:07 PM9/5/11
to

Hallo,

das beste ist, Du schreibst mal die Tabellennamen auf, und gibst ein
kleines Beispiel, was Du damit wie berechnet haben möchtest.

Für den Anfang wird es für Dich sicher hilfreich sein, die Abfrage im
Management-Studio (kostenlos) mit dem Abfrage-Designer zu erstellen
(Abfrage, Abfrage in Editor entwerfen). Das ist eigentlich selbsterklärend.

Bei komplexeren Abfragen wirst Du damit aber an die Grenzen kommen.

Schönen Tag.


--
Viele Grüsse
Jörg

Chris Seidel

unread,
Sep 5, 2011, 2:37:27 PM9/5/11
to
On Mon, 05 Sep 2011 20:29:07 +0200, Jörg Burzeja <No_Spam...@gmx.de>
wrote:

> das beste ist, Du schreibst mal die Tabellennamen auf, und gibst ein
> kleines Beispiel, was Du damit wie berechnet haben möchtest.

ja wenn ich das könnte ;)

pseudo:

select * from (select sum(f1) from foo where f2=1, select sum(f1) from
foo where f2=2)

> Für den Anfang wird es für Dich sicher hilfreich sein, die Abfrage im
> Management-Studio (kostenlos) mit dem Abfrage-Designer zu erstellen
> (Abfrage, Abfrage in Editor entwerfen). Das ist eigentlich
> selbsterklärend.

Schon versucht, hat zu nichts geführt.

Jörg Burzeja

unread,
Sep 5, 2011, 2:59:10 PM9/5/11
to
Am 05.09.2011 20:37, schrieb Chris Seidel:

>> das beste ist, Du schreibst mal die Tabellennamen auf, und gibst ein
>> kleines Beispiel, was Du damit wie berechnet haben möchtest.
>
> ja wenn ich das könnte ;)
>
> pseudo:
>
> select * from (select sum(f1) from foo where f2=1, select sum(f1) from
> foo where f2=2)

Schau mal, ob Du damit klar kommst:
http://www.sql-tutorial.net/

Ganz ohne Informationen wird es schwer, Dir einen Lösungsvorschlag zu geben.

>> Für den Anfang wird es für Dich sicher hilfreich sein, die Abfrage im
>> Management-Studio (kostenlos) mit dem Abfrage-Designer zu erstellen
>> (Abfrage, Abfrage in Editor entwerfen). Das ist eigentlich
>> selbsterklärend.
>
> Schon versucht, hat zu nichts geführt.

Mir wird nicht verständlich was Du genau auswerten möchtest.

--
Viele Grüsse
Jörg

Jörg Burzeja

unread,
Sep 5, 2011, 3:36:30 PM9/5/11
to
Am 05.09.2011 20:59, schrieb Jörg Burzeja:

> Mir wird nicht verständlich was Du genau auswerten möchtest.

Hier noch ein bisschen Text ins Blaue - lösche entweder die beiden
Zeilen mit Vorschlag 1 ODER die beiden Zeilen mit Vorschlag 2, und
schau, ob es das ist was Du möchtest.


USE tempdb
GO
SET NOCOUNT ON
GO

CREATE TABLE tbltemp(
PersonID int not null,
UnternehmenID int not null,
Art Char (10) not null,
Stunden float not null
)
GO

INSERT INTO tbltemp(PersonID, UnternehmenID, Art, Stunden)
SELECT 15, 70, 'fahrt', 20 UNION ALL
SELECT 35, 70, 'fahrt', 20 UNION ALL
SELECT 16, 70, 'dienst', 40 UNION ALL
SELECT 17, 72, 'fahrt', 40 UNION ALL
SELECT 18, 74, 'fahrt', 60 UNION ALL
SELECT 19, 78, 'dienst', 40 UNION ALL
SELECT 20, 78, 'fahrt', 20 UNION ALL
SELECT 21, 76, 'dienst', 60 UNION ALL
SELECT 25, 76, 'fahrt', 40

GO

SELECT * FROM tbltemp
GO

WITH dienst AS
(
SELECT art, SUM (stunden) AS stunden
FROM tbltemp
WHERE Art = 'dienst'
GROUP BY art
)
, fahrt AS
(
SELECT art, SUM (stunden)AS stunden
FROM tbltemp
WHERE Art = 'fahrt'
GROUP BY art
)

/* Vorschlag 1
SELECT *
FROM
fahrt, dienst
/* Vorschlag 1

/* Vorschlag 2
SELECT *
FROM fahrt
UNION
SELECT *
FROM dienst
/* Vorschlag 2

DROP TABLE tbltemp
GO


--
Viele Grüsse
Jörg

Chris Seidel

unread,
Sep 7, 2011, 10:45:45 AM9/7/11
to
On Mon, 05 Sep 2011 21:36:30 +0200, Jörg Burzeja <No_Spam...@gmx.de>
wrote:

> WITH dienst AS
> (
> SELECT art, SUM (stunden) AS stunden
> FROM tbltemp
> WHERE Art = 'dienst'
> GROUP BY art
> )

Aha! Das WITH kannte ich nicht. Danke, das ist es.
0 new messages