SQL - 在列中保留一个值,并将其余值指定为零

时间:2018-03-02 17:43:34

标签: sql-server

这是我第一次在这个论坛上提问。我是SQL的新手,这个网站在过去帮助了我很多,并且在SQL问题方面成为了一流的信息来源。我非常感谢。

我有一张看起来像这样的表

CompanyNo | BatchNo| Location | Batch_Count
--------------------------------------------------
01        |  102    |   NJ     |   31     
01        |  102    |   NJ     |   31    
01        |  102    |   NJ     |   31    
01        |  102    |   NJ     |   31    
01        |  102    |   NJ     |   31    

我希望仅将Batch_Count保留为一条记录,并将其余部分指定为零

喜欢这个..

CompanyNo | BatchNo| Location | Batch_Count
--------------------------------------------------
01        |  102    |   NJ     |   31  
01        |  102    |   NJ     |   0    
01        |  102    |   NJ     |   0  
01        |  102    |   NJ     |   0  
01        |  102    |   NJ     |   0 

我尝试使用Row_NUMRANKDense_Rank函数,但无法实现这一结果。也许我做得不对?

有人可以帮助我或指出正确的方向来解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

SELECT CompanyNo,BatchNo,Location,CASE Batch1_Count WHEN 1 THEN Batch_Count
ELSE 0 END AS Batch_Count
FROM 
(
  SELECT CompanyNo,BatchNo,Location,Batch_Count,
  ROW_NUMBER() over(PARTITION BY Batch_Count ORDER BY Batch_Count DESC) 
  AS Batch1_Count FROM Table1
) 
AS Test