1

私はかなり前からこれに対処してきましたが、これを回避できませんでした。こんな感じで、case_no(英数字)、first_name、 の表がlast_nameありdescriptionます。

私がしたいのは、異なる first_name/last_name の組み合わせごとに 1 つの行のみを選択することです。たとえば、

     case_no         |         first_name         |         last_name
---------------------+----------------------------+------------------------
     AAAAAAA         |          john              |          doe
     BBBBBBB         |          Dog               |          dawg
     CCCCCCC         |          Cat               |          kitten
     DDDDDDD         |          john              |          doe

その例を考えると、次の行を取得したいと思います。

     case_no         |         first_name         |         last_name
---------------------+----------------------------+------------------------
     BBBBBBB         |          Dog               |          dawg
     CCCCCCC         |          Cat               |          kitten
     DDDDDDD         |          john              |          doe

どうすればいいですか?

4

2 に答える 2

6

これを試して、

SELECT MAX(CASE_NO), FIRST_NAME, LAST_NAME
FROM TABLE
GROUP BY FIRST_NAME, LAST_NAME;
于 2013-02-08T07:58:01.827 に答える
3

PostgreSQL の場合:

SELECT DISTINCT ON (2, 3)
       case_no, first_name, last_name
FROM   tbl
ORDER  BY 2, 3, case_no DESC NULLS LAST;

DISTINCT ON:

のバージョンとの違いmax():

  • 結果の順序はfirst_name, last_nameです。あなたはそれを望むかもしれないし、望まないかもしれません。
  • パフォーマンスは似ています。順序付けされた結果が必要な場合、これはおそらくより高速であり、そうでmax()ない場合はより高速になる可能性があります。
  • 同じ行から簡単に列を追加できます。
于 2013-02-08T08:43:56.330 に答える