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

问题描述 投票:0回答:1

这是我第一次在这个论坛上提问。我是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函数,但无法实现这一结果。也许我做得不对?

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

谢谢!

sql-server
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.