1

次のデータを含むテーブルがあります。

- DATEURM     IDV    UNID
- 2013-02-02  15259  W0L0TGF0572 
- 2013-02-02  15259  W0L0TGF0572
- 2013-02-02  15674  ZFA18503158 
- 2013-02-02  16157  ZFA18503158
- 2013-02-02  16157  ZFA18503158
- ...

そして、このクエリを使用してデータを選択します:

SELECT * FROM TBL order_date WHERE DATEURM BETWEEN DATE 'today'+10 AND DATE 'today'+40 order by DATEURM asc ROWS 50

私が望むのは、 UNID 列の重複した行を取得しないことであり、結果は次のようになります。

- DATEURM  IDV UNID
- 2013-02-02  15259  W0L0TGF0572 
- 2013-02-02  16157  ZFA18503158
- ...

DISTINCT と GROUP BY をいじってみましたが、数時間後には良い結果が得られませんでした :(

4

1 に答える 1

1

あなたのコメントから、unid ごとに 1 つの行が必要であり、他のどの値を取得してもかまわないと言うので、これを試してください。

SELECT unid, min(dateurm) dateurm, min(idv) idv 
  FROM order_date
 WHERE DATEURM BETWEEN current_date + 10 AND current_date + 40
 group by unid
 order by 2

私が得る同じデータについて:

UNID        DATEURM             IDV
=========== ========== ============ 
W0L0TGF0572 2013-02-02        15259
ZFA18503158 2013-02-02        15674

SQL>
于 2013-01-23T07:40:44.013 に答える