2011-06-23 20 views
0

私はそこにare 5 columnsと言うテーブルa,b,c,d,tran_dateを持っているテーブルがあります。Sqlの日付クエリ

テーブル内のすべてa,b,c,dの最小tran_dateを調べるためのクエリを生成したいとします。

どのようにこれを行うに役立ちます。

EDIT:これはエラーORA-01427: single row subquery returns more than one rowために行うことができますどのように

select ref_date from ref_table 

:このクエリの結果は、クエリからの結果である単一の日付から減算する必要があります。 diffが正であってもよいこと

select a, b, c, d, 
    min(tran_date) as min_tran_date, 
    min(tran_date) - (select ref_date from ref_table) as diff 
from my_table 
group by a, b, c, d; 

注または:私が正しくあなたを理解していれば

+2

あなたは 'すべてのために最低限のtran_dateテーブルで、B、C、D' のことで何を意味するかわかりませんか?いくつかのサンプルデータを提供して、出力をどのようにすべきか?また、あなたが使用しているSQLの風味が役立ちます。 –

+0

@CamJackson Oracle SQLを使用しています – KLCoder

答えて

1

、追加subtratction要件を含めるようにする@ astanderの答えに拡大

SELECT a, 
     b, 
     c, 
     d, 
     MIN(tran_date) MIN_tran_date 
FROM Table 
GROUP BY a, 
      b, 
      c, 
      d 
0
SELECT A, Min(SomeDate) FROM Foo GROUP BY A 
1

のようなものを試してみてくださいref_dateがすべてtran_dateの値になっているかどうか、それらのすべての後、または途中のどこかに応じて、否定的になります。

あなたが特定のdiff値でのみ興味があるなら - minimnum tran_dateref_dateた後であり、言う - あなたは結果をフィルタリングするhaving句を追加することができます。

having min(tran_date) - (select ref_date from ref_table) > 0 

または、おそらくより明確にする:このケースで

having min(tran_date) > (select ref_date from ref_table)