NULL's der Datenfelder in einem Datensatz zählen

09/10/2009 - 21:14 von Phil Belloni | Report spam
Hi

MSSQL 2008

Ich habe ein Datensatz mit z.B. 10 Datenfelder.
Nun möchte ich dem User den Status, wie weit die Felder ausgefüllt sind mittels einer Prozentzahl anzeigen.
Dies erreiche ich ja unteranderem, wenn ich die NULL's der jeweiligen (leeren) Felder zusammenzàhle.

Leider haben meine Versuche (noch) nicht gefruchtet, z.B.:
SELECT ISNULL(Nachname, '1') + ISNULL(Vorname, '1') AS Expr1 FROM dbo.tblPraevalenzStudie
Ergebnis statt 2.
Wie kann ich das umwandeln?

Oder sollte ich einen anderen Weg gehen?

Gruss und Dank
 

Lesen sie die antworten

#1 Elmar Boye
09/10/2009 - 22:24 | Warnen spam
Hallo Phil,

"Phil Belloni" schrieb ...
MSSQL 2008

Ich habe ein Datensatz mit z.B. 10 Datenfelder.
Nun möchte ich dem User den Status, wie weit die Felder ausgefüllt sind mittels einer Prozentzahl anzeigen.
Dies erreiche ich ja unteranderem, wenn ich die NULL's der jeweiligen (leeren) Felder zusammenzàhle.
Leider haben meine Versuche (noch) nicht gefruchtet, z.B.:
SELECT ISNULL(Nachname, '1') + ISNULL(Vorname, '1') AS Expr1 FROM dbo.tblPraevalenzStudie
Ergebnis statt 2.
Wie kann ich das umwandeln?

Oder sollte ich einen anderen Weg gehen?



Einfacher dürfte die Besonderheiten von COUNT() auszunutzen:
http://msdn.microsoft.com/de-de/lib...75997.aspx
das auch auf NICHT NULL usw. beschrànkt werden kann:

Ein Beispiel
CREATE TABLE Tabelle (
Name varchar(40) NULL,
Vorname varchar(40) NULL);

INSERT INTO Tabelle VALUES( 'Meier', 'Hans');
INSERT INTO Tabelle VALUES( 'Müller', 'Klaus');
INSERT INTO Tabelle VALUES( 'Müller', NULL);
INSERT INTO Tabelle VALUES( NULL, 'Hans');
INSERT INTO Tabelle VALUES( NULL, NULL);
GO

SELECT
COUNT(*) AS GesamtAnzahl,
COUNT(Name) AS NameGesamtAnzahl,
COUNT(DISTINCT Name) AS NameAnzahl,
COUNT(Vorname) AS VornameAnzahl,
COUNT(DISTINCT Vorname + Name) AS VorundNameGesamtAnzahl
FROM Tabelle;

Gruß Elmar

Ähnliche fragen