Forums Neueste Beiträge
 

UNION ALL - Verständnisfrage

14/12/2009 - 11:00 von Thomas Schremser | Report spam
Hallo allerseits!

Ich habe folgende Abfrage:

SELECT
PersonID,
'N-PRA' AS GefCode,
Von,
Bis
FROM
stf.Taetigkeit
WHERE
TaetigkeitArtCode = 'N'
AND OrgArtCode = 'N'
UNION ALL SELECT
PersonID,
'WOPRA' AS GefCode,
Von,
Bis
FROM
stf.Taetigkeit
WHERE
TaetigkeitArtCode = 'N'
AND OrgArtCode = 'W'

Diese liefert mir 1183 Datensàtze zurück. Nehme ich statt UNION ALL nur
UNION, sind es lediglich 1148. Nun ist mir schon bekannt, daß UNION ein
implizites DISTINCT macht, aber durch den konstanten GefCode dürfen doch
keine identischen Datensàtze auftreten. Was überseh' ich hier?

TIA

Grüße
Thomas

Any problem in computer science can be solved with another layer
of indirection. But that usually will create another problem.
David Wheeler
 

Lesen sie die antworten

#1 Uwe Ricken
14/12/2009 - 11:27 | Warnen spam
Servus Thomas,

ein UNION ALL zeigt - wie es das Command schon impliziert - alle Datensàtze.
Mache doch mal folgendes, um die Übeltàter zu identifieren:

SELECT r.PersonId,
r.GefCode
FROM
(
SELECT
PersonID,
'N-PRA' AS GefCode,
Von,
Bis
FROM
stf.Taetigkeit
WHERE
TaetigkeitArtCode = 'N'
AND OrgArtCode = 'N'
UNION ALL SELECT
PersonID,
'WOPRA' AS GefCode,
Von,
Bis
FROM
stf.Taetigkeit
WHERE
TaetigkeitArtCode = 'N'
AND OrgArtCode = 'W'


) r
HAVING COUNT(PersonId) >1
GROUP BY
PersonId, GefCode

Was kommt denn da raus?

Uwe Ricken
db Berater GmbH
http://www.db-berater.de

MCTS: Microsoft SQL Server 2005
MCDBA: Microsoft SQL Server 2005

Ähnliche fragen