2010-12-29 11 views
1

私は、私が助けが必要な一般的に簡単なSQLの問題があると思います。私は、pmsid、ssn、lname、fname、rc、およびbudcodeの各フィールドを持つ必要があるテーブルを用意しています。これらのフィールドのいくつかは明白ですが、他のフィールドは私の質問にとって重要ではありません。SQLの問題 - 重複する名前、すべてのフィールドのリスト

このセットには、名字と姓が重複しているレコードをリストする必要があります。だからジョーブローが二度現れたら、私は彼の名前をこのリストに載せたい。 また、レコードの他のフィールドを表示する必要があります。今のところシンプル?

次のSQL文を作成しました。問題のレコードの姓と名が正しくリストされています。すべてのフィールドを含めると、レコードは一切取得されません。ここでは、これまでどのような作品です!:FROM

SELECT LNAME、fn​​ameは[従業員]
WHERE LNAME = ' '!とFNAME =''
LNAME BY GROUP、fnameは
HAVING COUNT(*)> 1

は、それから私は、リストされている他のフィールドを取得するために、次の操作を実行しようとしたが、私は明らかに、エラーが発生します。

は、[従業員]SELECT * FROM LNAME、LNAME BY ORDER

(SELECT lname, fname FROM [Employee] 
WHERE lname != ' 'AND fname != ' ' 
GROUP BY lname, fname 
HAVING COUNT(lname) > 1 and COUNT(fname) > 1) 

でfnameは、FNAME

は私がWHERE句に複数のフィールドを使用することはできません知っているが、私はわからないんだけど それ以外は試してみてください。何かご意見は?

+0

WHERE 'を連結します。ここで、lname || fnameを(select lname || fname from ...) 'にします。もちろん、私はあなたがSQL Serverでどのように連結しているのか分かりませんが、Postgresではそれが二重パイプで、SQL Serverでは '+'または '&'である可能性があります。 – vol7ron

答えて

3

Iドンあなたの元のソリューションではそれほど遠いと思いますが、私はちょうど2つではなく1つのフィールドを持つように名前を追加しようとしています。

他にも多くのアプローチがありますが、すでにカップルが公開されています。

+0

これは完璧でした!まさに私が探していたもの!ありがとうございました!! – Robert

+0

これは過去の私の解決策でした。LTRIMとRTRIMが追加され、いくつかの誤植が処理されました。 – Dave

2

各行にIDフィールドや他の固有の識別子がありますか?もしそうなら、あなたは自分を行うことができ参加:

SELECT e.* 
FROM Employee as E 
INNER JOIN Employee as E2 
ON e.fname = e2.fname and e.lname = e2.lname 
WHERE e.id <> e2.id 
+0

残念ながら、この表には本当の一意の識別子はありません。あるべきであるが、実際にはない。 – Robert

+0

@robert - 複写物の「良い」コピーと「悪い」コピーを区別するために使用できる他のフィールドはありますか? – JNK

1

あなたがこれを達成するためにSUM集計関数を使用することができます。 サンプルクエリ:

SELECT * 
    FROM (
     SELECT pmsid, 
       ssn, 
       lname, 
       fname, 
       rc, 
       budcode, 
       SUM(1) OVER(PARTITION BY lname, fname) tsum 
      FROM [Employee] a 
     ) b 
WHERE tsum > 1 

編集:箇条

によって除去注文
+0

私は初心者なので、この例をクエリウィンドウにコピーして実行しようとしました。私は "順序"の近くに不正な構文を得る "。私が内部Select文を実行しただけでは、 "DESC 'の近くに不正な構文があります。 – Robert

+0

私はちょっとしたデータで試してみましょう。 – Chandu

+0

修正プログラムとして、Order by Clauseを削除しました。やってみよう。 – Chandu

関連する問題