我有日期,帐户和数据源的列表。我以每个帐户的最新max
日期和使用我的窗口引用这个数字。
在我的窗口参考,我使用row_number ()
分配给每个帐户的独特行和我们收到并通过max
日期为每个帐户和数据源分类整理数据的来源。最终的结果应该列出每一行对应一个唯一的帐户+数据组合的来源,在该组合中可用的最大日期。最高日记录将列出1。
我想设置仅与1填充行查询列出我的窗函数的条件,而不是显示在所有其他的人。这就是我下面有和我卡住:
SELECT
date,
account,
data source,
MAX(date) max_date,
ROW_NUMBER () OVER (PARTITION BY account ORDER BY max_date) ROWNUM
FROM table
GROUP BY
date,
account,
data source
任何帮助是极大的赞赏。我可以根据需要在任何详细说明
如果我理解你的问题正确这个SQL会做的伎俩
SELECT
date,
account,
data source,
MAX(date) max_date
FROM (
SELECT
date,
account,
data source,
MAX(date) max_date,
ROW_NUMBER () OVER (PARTITION BY account ORDER BY max_date) ROWNUM
FROM table
GROUP BY
date,
account,
data source
)
where ROWNUM = 1
如果你并不需要比唯一性,其他任何的行号,然后像这样的查询应该工作:
select distinct t.account, data_source, date
from table t
join (select account, max(date) max_date from table group by account) m
on t.account=m.account and t.date=m.max_date
这仍然可以产生两个记录一个账户如果两个记录不同的数据源具有相同的日期。如果这是一个可能性,然后mdem7的做法可能是最好的。
这是从这个问题有点不清楚,但如果你想帐户和DATA_SOURCE其最大日期,确保有没有重复的每一种组合,则明显要足够:
select distinct account, data_source, max(date) max_date
from table t
group by account, data_source