Sql server 如何在没有主键的情况下从重复的列值中获取第一行

Sql server 如何在没有主键的情况下从重复的列值中获取第一行,sql-server,Sql Server,我有一张表,场景如下 sku in_stock sold required_stock stock_order_on hrs_to_arrive hrs_to_verify margin sku0001 30 30 0 2/26/2020 17.73 2.36 0.25 sku0001 10 0

我有一张表,场景如下

sku      in_stock   sold required_stock  stock_order_on  hrs_to_arrive  hrs_to_verify   margin          
sku0001   30         30         0            2/26/2020         17.73          2.36           0.25           
sku0001   10         0          10           3/11/2020         5.91           0.79           0.25   
sku0004   20         12         13           10/12/2019        4.30           0.30           0.1            
结果应该是:

sku      in_stock   sold required_stock  stock_order_on  hrs_to_arrive  hrs_to_verify   margin          
sku0001   40         30         10           2/26/2020         17.73          2.36           0.25               
sku0004   20         12         13           10/12/2019        4.30           0.30           0.1            
这是上的库存、已售出所需库存、库存订单和其他列的总和

我可以对每个列执行
top 1
查询,但如果列列表增加,我需要添加
4子查询
或更多子查询。
min(列)
也不工作,因为列具有
int
值。 应该有一种方法可以在单个查询中完成,但我不知道


注意:我需要在**视图**上进行选择查询,它没有**主键**

您可以使用窗口功能:

select t.sku, 
       sum(t.in_stock) over (partition by t.sku) as in_stock,
       sum(t.sold) over (partition by t.sku) as sold,
       sum(t.required_stock) over (partition by t.sku) as required_stock,
       t.stock_order_on t.hrs_to_arrive, t.hrs_to_verify, t.margin,
       row_number() over (partition by t.sku order by t.stock_order_on) as seq
from table t;
因此,可以使用
seq
进行过滤:

select t.* 
from ( <query>
     ) t 
where seq = 1;
选择t.*
由(
)t
其中,seq=1;
请回答该问题,并包括您自己的一些SQL尝试。