我有一张桌子可以are 5 columns
说a,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
。
如果我理解正确,请尝试类似
SELECT a,
b,
c,
d,
MIN(tran_date) MIN_tran_date
FROM Table
GROUP BY a,
b,
c,
d
扩展@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)
SELECT A, Min(SomeDate) FROM Foo GROUP BY A