2016-10-20 5 views
-1

特定のアカウントに対してアクションを保持するテーブルがあり、アクションには番号付きのアクションセットが与えられ、そのセット内に一意の連続番号が付けられます。どういうわけか、一意の番号のいずれかが重複していて、これが起こった可能性があるより多くの例を確認したいという問題が発生しました。表には、少しのようになります。私はここに私が検索で見つけたいろいろなことを試してみましたが、それは私の特定の状況に合うように見える何かを見つけることができません特定の条件に基づいて列内に重複値を見つける

Account | Action Set | Action No | Action Code 
--------|------------|-----------|------------ 
    001 |  1  |  1  | GEN 
    001 |  1  |  2  | PHO 
    001 |  1  |  3  | RAN 
    001 |  1  |  3  | GEN 
    002 |  1  |  1  | GEN 
    002 |  1  |  2  | PHO 
    002 |  1  |  3  | RAN 

任意のアカウント番号については、1つのアクションSET内で同じアクション番号が複数回使用されている箇所を探したいと思います。どれだけの数があるのか​​だけではなく、完全な行を返す必要もあります。上記の例から

、私はこれらの結果、同じアカウント、同じアクションセット、同じアクション番号

Account | Action Set | Action No | Action Code 
--------|------------|-----------|------------ 
    001 |  1  |  3  | RAN 
    001 |  1  |  3  | GEN 

を見ることを期待する私は、私がこれまでになく、正直の範囲を試してみましたが何を投稿します私がこれまでに書いたコードは次のとおりです。

SELECT 

TIA

マーク

+1

あなたは質問を編集し、あなたが探しているものの例を提示する必要があります。あなたの行は基準に一致していないようです。 –

+1

これはかなり良いスタートです! – jarlh

+0

@ GordonLinoff - 私は既にあなたが答えてくれたことを知っていますが、あなたの解決策はうまくいきました。ありがとう。 –

答えて

0

あなたの説明に基づいて、あなたはexistsを使用することができますが:

select t.* 
from t 
where exists (select 1 
       from t t2 
       where t2.account = t.account and 
        t2.actionset = t.actionset and 
        t2.actionno <> t.actionno 
      ); 

はEDIT:

上記は、アクション番号が異なっていることを前提としています。そうでなければ、使用することができます。

select t.* 
from t 
where (select count(*) 
     from t t2 
     where t2.account = t.account and 
      t2.actionset = t.actionset 
    ) >= 2; 
+0

あなたの応答に感謝します。アクション番号は異なるはずですが、同じであることを特定しようとします。あなたの2番目のクエリは私のために働かなかった、ちょうどデータベースのすべての行を返します。しかし、私は追加の –

+0

を追加しました。申し訳ありませんが、あまりにも早く入力してください、私のためにそれを修正したWHERE句に加えて、私はあなたの応答を編集しました。 –

0

が、これは1

Select account,actionset,actioncode,actionno 
from table 
where (account,actionset) 
IN 
(
Select account,actionset from table 
group by account,actionset 
having count(distinct actionno)>1 
) 
group by account,actionset,actioncode,actionno 
+0

ご回答ありがとうございますが、角括弧(account、actionset)内のwhere句が好きではありません - '、'の近くに不正な構文エラーがあります –

+0

大括弧を削除して@MarkJeffriesを確認してください –

+0

ブラケット、それは問題を解決しませんでした。私はエラーを受け取ります: 条件が期待される文脈で指定された非ブール型の式は '、'の近くにあります。 –

0

テーブルから重複レコードを取得するための私の解決策を見つけるしてくださいしてみてください。

SELECT [ActionSet],ActionCode,[ActionNo] 
FROM 
(
    SELECT *,ROW_NUMBER()OVER(PARTITION by [ActionSet],[ActionNo] ORDER BY 
    [ActionNo]) as rnk FROM [dbo].[ActionAccount] 
) t where t.rnk>1 

ありがとうございます。

関連する問題