1

次のデータを含むビューがあるとしましょう

Name      Image
----    ----------
 A         Image1
 A         Image2
 A         Image3
 B         Image4
 B         Image5

今私が望むのは、名前ごとに1行だけを選択することです。たとえば、結果をどのようにしたいかは問題ではありません。

Name      Image
----    ----------
 A         Image1
 B         Image4

別のシナリオは、ここで必要なものに近いかもしれません。製品を販売するサイトで、各製品に複数の画像があり、カバーとして表示される画像を 1 つだけ選択する方法です (最初の画像としましょう)。Distinct を使用しましたが、各行のイメージが異なるため機能しません。

ありがとう、

ラシャ

4

1 に答える 1

2

質問のデータについては、単純な集計で次のようになります。

select name, min(image)
from t
group by name

複数の列があり、同じテーブルのすべての行が必要な場合:

select t.*
from (select t.*,
             row_number() over (partition by name order by newid()) as seqnum
      from t
     ) t
where seqnum = 1;

このrow_number()関数は、同じ名前を持つすべての行に連続番号を割り当てます。はorder by newid()ランダムなソートを行います。

于 2013-05-22T13:47:41.070 に答える