Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   [MSSQL] Erweiterte Gruppierung im View (https://www.delphipraxis.net/160395-%5Bmssql%5D-erweiterte-gruppierung-im-view.html)

Reinhardtinho 11. Mai 2011 09:28

Datenbank: MS SQL Server • Version: 2005 • Zugriff über: Managment Studio

[MSSQL] Erweiterte Gruppierung im View
 
Hi,

ich habe folgendes Problem.

In einem View möchte ich nach einem Status-Feld gruppieren und zusätzlich eine Menge ausgeben, das Status-Feld selbst aber ist schon zusammengefasst.

Die Tabelle sieht beispielhaft so aus:
Code:
ID | Name | Status
------------------
1  | ABCD | A
2  | ABCD | A
3  | ABCD | B
4  | ABCD | A
5  | EFGH | C
6  | EFGH | C
7  | EFGH | D
8  | EFGH | D
Die Definition des Views:
Code:
create view TestView
as
select
  distinct
  Name,
  Qty = Count(ID),
  Status = case when Status in ('A', 'B') then 'A' else 'C' end
from Test
group by
  Name,
  Status
Und das Resultat:
Code:
Name | Qty | Status
-------------------
ABCD | 1   | A
ABCD | 3   | A
EFGH | 2   | A
Was ich haben möchte:
Code:
Name | Qty | Status
-------------------
ABCD | 4   | A
EFGH | 4   | A
Gibt es eine Möglichkeit, die Abfrage im View so anzupassen, so dass ich das gewünschte Resultat bekomme und muss ich zu der Alternative greifen, eine weitere Status-Spalte in meine Tabelle aufzunehmen?

Vielen Dank für eure Mühe

DeddyH 11. Mai 2011 09:35

AW: [MSSQL] Erweiterte Gruppierung im View
 
Und wenn Du den Alias Status einmal anders benennst als das Feld, das dahintersteckt?

Reinhardtinho 11. Mai 2011 09:40

AW: [MSSQL] Erweiterte Gruppierung im View
 
Das Resultat ist leider noch das gleiche.

DeddyH 11. Mai 2011 09:45

AW: [MSSQL] Erweiterte Gruppierung im View
 
Du gruppierst aber jetzt nach dem umbenannten Alias, oder?

Reinhardtinho 11. Mai 2011 09:48

AW: [MSSQL] Erweiterte Gruppierung im View
 
Nein, das geht nicht.

Mein View sieht nun so aus:

Code:
create view TestView
as
select
  distinct
  Name,
  Qty = Count(ID),
  Foo = case when Status in ('A', 'B') then 'A' else 'C' end
from Test
group by
  Name,
  Status

omata 11. Mai 2011 09:49

AW: [MSSQL] Erweiterte Gruppierung im View
 
SQL-Code:
SELECT Name, COUNT(*) Qty, Status
FROM (SELECT id, Name, CASE WHEN status in ('A', 'B') THEN 'A' ELSE 'C' END Status
      FROM Test) x
GROUP BY name, status
Edit: oder...

SQL-Code:
SELECT Name, COUNT(*) Qty, CASE WHEN status in ('A', 'B') THEN 'A' ELSE 'C' END Status
FROM Test
GROUP BY name, CASE WHEN status in ('A', 'B') THEN 'A' ELSE 'C' END

Reinhardtinho 11. Mai 2011 10:00

AW: [MSSQL] Erweiterte Gruppierung im View
 
Perfekt!
Vielen Dank euch beiden und allen anderen die mitgegrübelt haben. :dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz