Laden...

[gelöst] NULL bei SELECT als Ergebnis verhindern

Erstellt von sgnirdrol vor 9 Jahren Letzter Beitrag vor 9 Jahren 842 Views
S
sgnirdrol Themenstarter:in
16 Beiträge seit 2013
vor 9 Jahren
[gelöst] NULL bei SELECT als Ergebnis verhindern

verwendetes Datenbanksystem: MSSQL 2012

Hallo zusammen,

wir wollen in einer Datenbank überprüfen ob es doppelte Einträge gibt.

Folgendes setzten wir momentan als Abfrage ein:


SELECT count(fldAuftrag) as anz
FROM tblTempAlpha
WHERE fldWorkTime IS NULL
GROUP BY fldAuftrag
HAVING count(*) > 1

Das Problem ist, wenn es keinen doppelten Eintrag gibt (was so sein sollte) geht die Abfrage auf NULL. Unser Überwachungstool welches die Abfrage in regelmäßigen Abständen ausführt, kann aber mit NULL-Werten nicht wirklich was anfangen.

Habt ihr eine Idee wie man evtl. die Abfrage anpassen könnte, damit keine NULL-Ergebnisse auftauchen.

~ sgnirdrol


Two Damn Geeks - 2dmg.org - Andorim

Andorim's Blog - blog.andorim.de - Andorim

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo sgnirdrol,

du kannst mit if/else-Konstrukten arbeiten:

IF...ELSE (Transact-SQL)
in Verbindung mit
RETURN (Transact-SQL)

Oder du gibst die Anzahl der Rows im Query zurück

@@ROWCOUNT (Transact-SQL)

Habs jetzt nicht getestet, aber damit solltest du hinkommen.

Gruss

Coffeebean

849 Beiträge seit 2006
vor 9 Jahren

Oder einfach ISNULL

S
sgnirdrol Themenstarter:in
16 Beiträge seit 2013
vor 9 Jahren

Danke für die Antworten!

Ich habe es mit einer Prozedur gelöst, mit Hilfe von den Links die Coffeebean geschrieben hatte.

Die Prozedur:


CREATE PROCEDURE [dbo].[checktbltmpAlpha] AS
IF (
SELECT count(*)
FROM tblTempAlpha
WHERE fldWorkTime IS NULL
GROUP BY fldAuftrag
HAVING count(*) > 1 ) = null 
RETURN 0
ELSE 
RETURN (SELECT count(*)
FROM tblTempAlpha
WHERE fldWorkTime IS NULL
GROUP BY fldAuftrag
HAVING count(*) > 1)

Der Prozedur Aufruf:

DECLARE	@return_value int

EXEC	@return_value = [dbo].[checktbltmpAlpha]

SELECT	'Return Value' = @return_value

~ sgnirdrol


Two Damn Geeks - 2dmg.org - Andorim

Andorim's Blog - blog.andorim.de - Andorim

656 Beiträge seit 2008
vor 9 Jahren

Wie wärs mit COALESCE?

select coalesce(count(*), 0) from tblTmpAlpha where ...

Edit: ups, das Having übersehen. Damit funktionierts natürlich nicht. Es kommt nämlich kein Null zurück, sondern keine Ergebniszeile. Wäre auch komisch gewesen wenn count(...) ein Null liefern würde.