1

私はこのようなテーブルを持っていますTable

ColumnA (VARCHAR)|ColumnB (VARCHAR)|ColumnC (VARCHAR)|ColumnD (DATE)
     A1                 B1               C1          2012-12-06
     A1                 B1               C1          2012-12-12
     A2                 B2               C2          2012-12-07
     A2                 B2               C2          2012-12-09

ColumnA-ColumnB-ColumnCに結合された最初のオカレンスのみを選択したいので、結果は次のようになります。

A1 | B1 | C1 | 2012-12-06
A2 | B2 | C2 | 2012-12-07
4

2 に答える 2

2

[日付]列と残りのグループで集計関数を使用できます。

select ColumnA, ColumnB, ColumnC, Min(ColumnD)
from yourtable
group by ColumnA, ColumnB, ColumnC

SQL FiddlewithDemoを参照してください

または、次を使用できますrow_number()

select ColumnA, ColumnB, ColumnC, ColumnD
from
(
  select ColumnA, ColumnB, ColumnC, ColumnD,
    row_number() over(partition by ColumnA, ColumnB, ColumnC order by ColumnD) rn
  from yourtable
) src
where rn = 1

SQL FiddlewithDemoを参照してください

于 2012-12-07T13:22:58.563 に答える
1

group-byが目的のように見えます。

SELECT ColumnA, ColumnB, ColumnC, MIN(ColumnD)
FROM MyTable
GROUP BY ColumnA, ColumnB, ColumnC
于 2012-12-07T13:23:46.423 に答える