我想每天只从一张桌子中获取最大数量。因此,每天,如果我在Cnt中所拥有的全部为零,则抓取一条记录,如果值大于零,则抓取该特定记录。一个简单的MAX()无法使用,因为同一天我有不同的价格。
这是我桌子的图像。我想将行保持绿色。可能是基于ID和日期的自我加入。只是在这里大声思考。
我正在使用SQL Server数据仓库。
答案 0 :(得分:3)
请确保MAX正是您所需要的。这样的事情。这将从样本数据中检索您想要的确切行。
select max(Cnt)
, Dt
, ID
from YourTable
group by Dt
, ID
获得新的理解,我认为您可能需要这样的东西。这将返回您感兴趣的整个行。
select *
from
(
select ID
, P1
, P1
, P1
, P1
, P1
, P1
, Cnt
, Firm
, Sys
, Dt
, RowNum = ROW_NUMBER()over(partition by ID, Dt order by Cnt desc)
from YourTable
) x
where x.RowNum = 1