2017-06-16 83 views
1
中的所有其他行

這是我的表。計算最小總值並刪除表

Table MyTable 
------------- 
ID Distance1 Cost1    Distance2 Cost2  Distance3 Cost3 
1 711.9  6196.90432379846 NULL  NULL  NULL  NULL 
2 672.4  7316.33    NULL  NULL  103.5  900.941 8217.271 
3 787.7  8570.9    252   2193.59  NULL  NULL 

我想要的是,找出具有最小總數(Cost1 + Cost2 + Cost3)的行。保留該行並刪除其他所有內容。

到目前爲止,我已經實現了這一點。這給了我具有最小總值的行。

select TOP 1 *, ISNULL(Cost1, 0)+ISNULL(Cost2, 0)+ISNULL(Cost3, 0) as TotalCost from MyTable order by TotalCost 

我也想刪除其他行。無論如何,我可以在一個聲明中做到這一點。

回答

1

使用CTERow_Number窗函數刪除

;with cte as 
(
select Row_number()over(order by ISNULL(Cost1, 0)+ISNULL(Cost2, 0)+ISNULL(Cost3, 0)) rn,* 
from MyTable 
) 
Delete from cte where rn > 1 
+0

作品!謝謝! – user1