私はZachと同じ方向に沿って考えていましたが、より精巧な例で問題を見てみようと思いました。
proc sql;
CREATE TABLE contacts (
line1 CHAR(30), line2 CHAR(30), pcode CHAR(4)
);
* Different versions of the same address - L23 Bass Plaza 2199;
INSERT INTO contacts values('LEVEL 23 bass', 'plaza' '2199');
INSERT INTO contacts values('level 23 bass ', ' PLAZA' '2199');
INSERT INTO contacts values('Level 23', 'bass plaza' '2199');
INSERT INTO contacts values('level 23', 'BASS plaza' '2199');
*full address in line 1;
INSERT INTO contacts values('Level 23 bass plaza', '' '2199');
INSERT INTO contacts values(' Level 23 BASS plaza ', '' '2199');
;quit;
これでiを出力できます。各カテゴリーから1つ?つまり、3つのアドレスですか?
または
ii。それとも1つのアドレスだけですか?もしそうなら、どのバージョンを好むべきですか?
ケース 1 の実装は次のように簡単です。
proc sql;
SELECT DISTINCT UPCASE(trim(line1)), UPCASE(trim(line2)), pcode
FROM contacts
;quit;
ケース 2 の実装は次のように簡単です。
proc sql;
SELECT DISTINCT UPCASE( trim(line1) || ' ' || trim(line2) ) , pcode
FROM contacts
;quit;