Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Anzahl der Datensatze count(*) (https://www.delphipraxis.net/186255-anzahl-der-datensatze-count-%2A.html)

bernhard_LA 18. Aug 2015 07:54

Datenbank: MSSQL • Version: ADO • Zugriff über: 2012

Anzahl der Datensatze count(*)
 
wie lautet das SQL Statement


 
Name FeldA FeldB FeldC
X ----- X --------
X
X
Y ----- Y
Y ----- Y
Z
W


um aus obiger Tabelle für alle Namen die Anzahl der Records auszugeben bei denen
dieser Name entweder im Feld A .... Feld C steht

also

 
Name AnzahlGefunden
X 1
Y 2
Z 0
W 0
o

rapante 18. Aug 2015 08:07

AW: Anzahl der Datensatze count(*)
 
So müsste es gehen:
Code:
SELECT name, COUNT(*) FROM table1 WHERE (name = FeldA) or (name = FeldB) or (name = FeldC) GROUP BY name;

Uwe Raabe 18. Aug 2015 08:12

AW: Anzahl der Datensatze count(*)
 
Zitat:

Zitat von rapante (Beitrag 1312521)
So müsste es gehen:
Code:
SELECT name, COUNT(*) FROM table1 WHERE (name = FeldA) or (name = FeldB) or (name = FeldC) GROUP BY name;

Liefert nur die Werte für X und Y, aber nicht die für W und Z.

Uwe Raabe 18. Aug 2015 08:29

AW: Anzahl der Datensatze count(*)
 
So sollte es gehen (eventuell noch suboptimal):

SQL-Code:
SELECT a.Name, SUM(a.cnt)
FROM (
SELECT Name, Count(*) as cnt FROM table1 WHERE name in (FeldA, FeldB, FeldC) GROUP BY Name
UNION
SELECT Name, 0 as cnt FROM table_1 WHERE (FeldA is null or name <> FeldA) and (FeldB is null or name <> FeldB) and (FeldC is null or name <> FeldC) GROUP BY Name) a
GROUP BY a.Name

rapante 18. Aug 2015 08:42

AW: Anzahl der Datensatze count(*)
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1312523)
Zitat:

Zitat von rapante (Beitrag 1312521)
So müsste es gehen:
Code:
SELECT name, COUNT(*) FROM table1 WHERE (name = FeldA) or (name = FeldB) or (name = FeldC) GROUP BY name;

Liefert nur die Werte für X und Y, aber nicht die für W und Z.

Ahh, es ist einfach noch zu früh :D

Hier mal ein Versuch NACH dem ersten Kaffee mit einem Subselect:

Code:
SELECT DISTINCT t1.name,
       (SELECT COUNT(*) FROM table1 WHERE table1.name = t1.name AND (table1.name in (table1.FeldA, table1.FeldB, table1.FeldC))) AS cnt
FROM table1 AS t1

Uwe Raabe 18. Aug 2015 08:45

AW: Anzahl der Datensatze count(*)
 
Zitat:

Zitat von rapante (Beitrag 1312533)
Code:
SELECT DISTINCT t1.name,
       (SELECT COUNT(*) FROM table1 WHERE table1.name = t1.name AND (table1.name in (table1.FeldA, table1.FeldB, table1.FeldC))) AS cnt
FROM table1 AS t1

Sehr schön! :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 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