Sql中的日期查询

时间:2011-06-23 05:16:44

标签: sql oracle ora-01427

我有一张表are 5 columnsa,b,c,d,tran_date

我想生成一个查询,以找出表格中每个a,b,c,d的最小tran_date。

任何帮助如何做到这一点。

编辑:此查询的结果需要从查询结果的单个日期中减去:

  select ref_date from ref_table

如何做到这一点,因为错误ORA-01427: single row subquery returns more than one row

3 个答案:

答案 0 :(得分:1)

如果我理解正确,请尝试类似

的内容
SELECT  a,
        b,
        c,
        d,
        MIN(tran_date) MIN_tran_date
FROM    Table
GROUP BY    a,
            b,
            c,
            d

答案 1 :(得分:1)

扩展@ 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)

答案 2 :(得分:0)

SELECT A, Min(SomeDate) FROM Foo GROUP BY A