2つの基準に基づいて、2つのデータベース間で一意のレコードを取得しようとしています。基準は次のとおりです。
- データがデータベース1(以下の私の例では@SCCM)で見つかった場合、そのデータが優先されます
- 選択したデータベース内のMAXリソースIDを取得します
これは、半分機能している例です。データベース設定は機能していますが、そのデータベース内の最大リソースIDは機能していません。現在、@SMSと@SCCMの両方の間で最大値を選択しています
DECLARE @SMS TABLE (
name0 varchar(100),
resid int
)
DECLARE @SCCM TABLE (
name0 varchar(100),
resid int
)
INSERT INTO @SMS
SELECT 'TEST', 1000 UNION
SELECT 'TEST', 1500 UNION
SELECT 'TEST1', 2000 UNION
SELECT 'TEST2', 3000 UNION
SELECT 'TEST3', 4000
INSERT INTO @SCCM
SELECT 'TEST', 100 UNION
SELECT 'TEST', 150 UNION
SELECT 'TEST1', 200 UNION
SELECT 'TEST2', 300
SELECT MIN(SMSDB) as SMSDB, MAX(Resid), Name0 FROM
(
SELECT name0, resid, 2 as SMSDB FROM @SMS
UNION ALL
SELECT name0, resid, 1 as SMSDB FROM @SCCM
) as tbl
GROUP BY NAME0
推測される結果:
SMSDB | Resid | Name0
----------------------
1 | 150 | TEST
1 | 200 | TEST1
1 | 300 | TEST2
2 | 4000 | TEST3