2011-07-08 16 views
1

これまでに回答がありましたが、関連するすべての質問が私の目的に合っていないようです。レコードのサブグループを1つの別個の列で選択してください

私は次のようなテーブルがある:

ID POSS_PHONE CELL_FLAG 
======================= 
1 111-111-1111 0 
2 222-222-2222 0 
2 333-333-3333 1 
3 444-444-4444 1 

私は、挿入のためにのみ個別のID値を選択したいが、私は特定のIDが重複から引き出されますどの気にしません。私はCELL_FLAG列を持っていた前に、私はちょうどほどの集計関数を使用していた

1 111-111-1111 0 
2 222-222-2222 0 
3 444-444-4444 1 

例えば(有効なSELECTは次のようになります)

SELECT ID, MAX(POSS_PHONE) 
FROM TableA 
GROUP BY ID  

をしかし、私はできませんdo:

SELECT ID, MAX(POSS_PHONE), MAX(CELL_FLAG)... 

私は行内の完全性を失うため、正しいですか?

CTEを使用した同様の例をいくつか見てきましたが、もう一度、まったく適合しません。

これは、CTEまたは何らかのタイプの自己結合サブクエリによって解決できますか?私はすぐにブロックしているので、他の解決方法は見当たりません。

答えて

2

だけサブクエリであなたの凝集を取得し、それに参加する:

SELECT a.ID, sub.Poss_Phone, CELL_FLAG 
FROM TableA as a 
INNER JOIN (SELECT ID, MAX(POSS_PHONE) as [Poss_Phone] 
      FROM TableA 
      GROUP BY ID) Sub 
    ON Sub.ID = a.ID and SUB.Poss_Phone = A.Poss_Phone 

これはあなたの非集計フィールド間の整合性を維持しますが、それでもあなたのIDあたりMAX(Poss_Phone)を与えます。

+0

私は文字通り、それを見つけてここに戻って投稿しました。 +1 – Joe

+0

@Joe - サブクエリはこのようなものには非常に便利です。 – JNK

+0

私はそれを把握しようと1時間以上費やした事実の後にどのように明らかに見えるのが嫌いです。 – Joe

関連する問題