这是我第一次在这个论坛上提问。我是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_NUM
,RANK
和Dense_Rank
函数,但无法实现这一结果。也许我做得不对?
任何人都可以帮助我或指出正确的方向来解决这个问题吗?
谢谢!
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