から値を比較し、私は次のようなデータ(tblUserSettings)で一つのテーブルを持っている:SQL Serverは - SQL Server内の同じテーブル
| 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 |
私がすべてとCityID = 20からのすべてのUserTypesのすべての値を比較する必要がありますCityID = 3の対応するUserTypeの値。CountryID = 9。比較する列は、Value1、Value2、Value3です。
すべてが一致しているかどうかを知る必要があります。
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
そしてそれは、私はすべてが一致するかどう定義するためにさらに処理する必要があり、結果、次の私を与える:私は次のように何かをしようとしました。少なくとも一つが一致しない場合だけですべての一致のための1または0のいずれかを受け取る -
| Match1 | Match2 | Match3 |
| 1 | 1 | 1 |
| 1 | 1 | 1 |
| 1 | 1 | 1 |
| 0 | 0 | 0 |
は、私は、出力で唯一の列と行を持つ方法でこれを行うことができますか?
? –