2009-07-21 11 views
2

州、市、町、郵便番号の表があります。いくつかの郵便番号には複数の町があるため、郵便番号には重複したデータがあります。今私はすべての4つの列を返すクエリが必要ですが、私は結果で郵便番号を繰り返すしたくないです。私は郵便番号ごとに1レコードを返すだけです。複数の町がある場合は、複数の町を示すために結果レコードに「-----------」を戻したいと思います。固有値

どうすればいいですか?

答えて

2
SELECT CASE WHEN COUNT(Town) > 1 THEN '-----' ELSE MIN(Town) END AS Town, Zip 
FROM YourTable 
GROUP BY Zip 

編集:あなたも国家のような他のフィールドを返すようにしたい場合は、単に例に追加します。

SELECT 
    CASE WHEN COUNT(Town) > 1 THEN '-----' ELSE MIN(Town) END AS Town, 
    CASE WHEN COUNT(Town) > 1 THEN '-----' ELSE MIN(State) END AS State, 
    Zip 
FROM YourTable 
GROUP BY Zip 
0

私は、郵便番号のみが1つの都市に関連することができますと仮定していると状態。

SELECT State 
, City 
, CASE WHEN MAX(Town) <> MIN(Town) THEN '-------' ELSE MAX(Town) END as Town 
, ZipCode 
FROM data 
GROUP BY State, City, ZipCode 

そんなことは?しかし、それが他のオプションと比べていかに効率的であるかはわかりません。

編集:COUNTはこれをより明瞭に表現することに同意します

関連する問題