In SQL Server, habe ich eine Tabelle mit folgenden Daten (tblUserSettings):SQL Server - Vergleichswerte aus derselben Tabelle
| CountryID | CityID | UserType | Value1 | Value2 | Value3 |
| 9 | 3 | 1 | 5 | 5 | 5 |
| 9 | 3 | 2 | NULL | NULL | NULL |
| 9 | 3 | 3 | 5 | 5 | 5 |
| 9 | 3 | 4 | 5 | 5 | 5 |
| 9 | 20 | 1 | 5 | 5 | 5 |
| 9 | 20 | 2 | NULL | NULL | NULL |
| 9 | 20 | 3 | 5 | 5 | 5 |
| 9 | 20 | 4 | 0 | 0 | 0 |
Ich brauche für alle UserTypes von CityID = 20 mit all alle Werte vergleichen die Werte für entsprechende UserTypes von CityID = 3. Die CountryID = 9. Die zu vergleichenden Spalten sind: Value1, Value2, Value3.
Ich muss nur wissen, ob sie alle miteinander übereinstimmen oder nicht. Ich habe versucht, etwas wie folgt zu tun:
SELECT CASE WHEN ISNULL(t1.Value1, 0) = ISNULL(t2.Value1, 0) THEN 1 ELSE 0 END AS Match1,
CASE WHEN ISNULL(t1.Value2, 0) = ISNULL(t2.Value2, 0) THEN 1 ELSE 0 END AS Match2,
CASE WHEN ISNULL(t1.Value3, 0) = ISNULL(t2.Value3, 0) THEN 1 ELSE 0 END AS Match3
FROM tblUserSettings t1
INNER JOIN tblUserSettings t2 ON t1.CountryID = t2.CountryID
AND t1.UserType = t2.UserType
AND t1.CityID = 3
AND t2.CityID = 20
WHERE t1.CountryID = 9
Und es gibt mir folgendes Ergebnis, das ich weiter verarbeiten muss, um zu definieren, ob alles übereinstimmt oder nicht.
| Match1 | Match2 | Match3 |
| 1 | 1 | 1 |
| 1 | 1 | 1 |
| 1 | 1 | 1 |
| 0 | 0 | 0 |
Kann ich tun dies in einer Art und Weise nur eine Spalte zu haben und in der Ausgabe Zeile - nur erhalten entweder 1 für alle Spiele oder 0, wenn mindestens ein nicht übereinstimmt?
was sollte das Ergebnis aussehen? –