Дата запроса в Sql - PullRequest
       26

Дата запроса в Sql

0 голосов
/ 23 июня 2011

У меня есть таблица, где are 5 columns скажем, a,b,c,d,tran_date.

Я хочу сгенерировать запрос для определения минимального значения tran_date для каждого a,b,c,d в таблице.

Любая помощь, как это можно сделать.

РЕДАКТИРОВАТЬ: результат этого запроса необходимо вычесть из одной даты, которая является результатом запроса:

  select ref_date from ref_table

Как это можно сделать из-за ошибки ORA-01427: single row subquery returns more than one row.

Ответы [ 3 ]

1 голос
/ 23 июня 2011

Расширение ответа @ astander для включения дополнительного требования вычитания:

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;

Обратите внимание, что diff может быть положительным или отрицательным, в зависимости от того, стоит ли ref_date перед всеми значениями tran_date, после всех них или где-то посередине.

Если вас интересуют только определенные значения diff - скажем, где минимальное число tran_date находится после ref_date - вы можете добавить having предложение для фильтрации результатов;в этом случае:

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

или, возможно, будет более понятным:

having min(tran_date) > (select ref_date from ref_table)
1 голос
/ 23 июня 2011

Если я вас правильно понимаю, попробуйте что-то вроде

SELECT  a,
        b,
        c,
        d,
        MIN(tran_date) MIN_tran_date
FROM    Table
GROUP BY    a,
            b,
            c,
            d
0 голосов
/ 23 июня 2011
SELECT A, Min(SomeDate) FROM Foo GROUP BY A
...