0

我有一张桌子可以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

4

3 回答 3

1

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

SELECT  a,
        b,
        c,
        d,
        MIN(tran_date) MIN_tran_date
FROM    Table
GROUP BY    a,
            b,
            c,
            d
于 2011-06-23T05:18:37.120 回答
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;

请注意,thediff可能是正数或负数,这取决于它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)
于 2011-06-23T08:44:09.190 回答
0
SELECT A, Min(SomeDate) FROM Foo GROUP BY A
于 2011-06-23T05:18:55.243 回答