Mehrere Felder vergleichen

Werbung:
Ohne das HAVING bekomme ich folgendes (was auch gut ist!):

Report_ID ¦ DATA
1 ¦ A
2 ¦ B
3 ¦ U
4 ¦ V
5 ¦ A
6 ¦ W
7 ¦ B
8 ¦ X
9 ¦ Y
10 ¦ Z

Nun geht es nur noch darum die doppelten Werte in der DATA-Spalte anzuzeigen (inkl. der Report_ID).
In diesem Falle wäre es das A und das B:

Report_ID ¦ DATA
1 ¦ A
2 ¦ B
5 ¦ A
7 ¦ B

Habe nun ein wenig rumgebastelt im HAVING, jedoch kam das gewünschte Resultat noch immer nicht zum Vorschein :-/
 
Kann auch nicht, für HAVING count(*) > 1 müsstest du die ID aus dem GROUP BY raus lassen und auch aus dem SELECT Teil. Du willst die ID aber vermutlich auch haben :)

Ich habe schon bewusst den INNER JOIN gewählt in meiner Lösung, das ließe sich gut anwenden. Wenn du nicht mit WITH oder einer View arbeiten willst, musst du den Select mit XML Path mehrfach angeben.
Code:
SELECT   t1.REPORT_ID,
     t1.data
FROM   (

SELECT  DISTINCT A.REPORT_ID,
  stuff((  SELECT DISTINCT '' + B.REPORT_EL_ID
  FROM  REPORT_DAT B
  WHERE  A.REPORT_ID = B.REPORT_ID
  FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,0,'') AS data
FROM  REPORT_DAT A

     ) t1
INNER JOIN (

SELECT  DISTINCT A.REPORT_ID,
  stuff((  SELECT DISTINCT '' + B.REPORT_EL_ID
  FROM  REPORT_DAT B
  WHERE  A.REPORT_ID = B.REPORT_ID
  FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,0,'') AS data
FROM  REPORT_DAT A

     ) t2
ON     t1.data = t2.data
AND     t1.REPORT_ID != t2.REPORT_ID
ORDER BY t1.REPORT_ID
 
Hallo zusammen!

Nochmal eine kurze Frage.
Der nachfolgende Query passt so.
Gibt es noch eine Möglichkeit die einzelnen Werte im STUFF mit Kommas zu separieren?

Code:
SELECT   t1.REPORT_ID,
     t1.data
FROM   (

SELECT  DISTINCT A.REPORT_ID,
  stuff((  SELECT DISTINCT '' + B.REPORT_EL_ID
  FROM  REPORT_DAT B
  WHERE  A.REPORT_ID = B.REPORT_ID
  FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,0,'') AS data
FROM  REPORT_DAT A

     ) t1
INNER JOIN (

SELECT  DISTINCT A.REPORT_ID,
  stuff((  SELECT DISTINCT '' + B.REPORT_EL_ID
  FROM  REPORT_DAT B
  WHERE  A.REPORT_ID = B.REPORT_ID
  FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,0,'') AS data
FROM  REPORT_DAT A

     ) t2
ON     t1.data = t2.data
AND     t1.REPORT_ID != t2.REPORT_ID
ORDER BY t1.REPORT_ID

Scheint ein Problem zu sein, da die ID ein INT und kein String ist...
 
Werbung:
Zurück
Oben