sql - 仅显示一次列值

标签 sql sql-server

假设我有下表。如何根据 ID 列仅显示一次“金额”?

   ID     Amount 
    1      10.00  
    1      10.00  
    1      10.00  
    2      10.00
    2      10.00
    2      10.00

给定 ff 示例,预期输出应该是这样的:

   ID     Amount 
    1      10.00  
    1      0.00  
    1      0.00  
    2      10.00
    2      0.00
    2      0.00

我尝试使用 ROW_NUMBER 但它还不够,它给了我这个结果。

   ID     Amount 
    1      10.00  
    1      0.00  
    1      0.00  
    2      0.00
    2      0.00
    2      0.00

编辑: 这是我到目前为止尝试过的:

SELECT ID
       ,CASE WHEN ROW_NUMBER() OVER(PARTITION BY Amount ORDER BY ID) = 1  
            THEN Amount
            ELSE 0.00
        END [AMOUNT]
FROM TABLE 

最佳答案

只需更改您的分区以使用 ID:

SELECT ID
       ,CASE WHEN ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) = 1  
            THEN Amount
            ELSE 0.00
        END [AMOUNT]
FROM TABLE
Order by ID, Amount Desc

关于sql - 仅显示一次列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31593415/

相关文章:

MySQL SUM(列) + (SUBQUERY WITH SUM)

sql - 1 个工作日回到 SQL DB2

c# - 从日期字段计算日期

c# - SqlException Procedure expects parameter 错误

mysql - Google Cloud SQL 无缘无故地增加大小直到磁盘已满

sql-server - 用于在 Amazon EC2 微型实例上进行生产的 SQL Server Express 2008 R2

mysql - 如何在 SELECT 函数中对行内的某个值进行 ORDER BY?

php - 左连接在 Laravel 中获得一行

sql - 仅 MS SQL 更新日期

sql - sql中多对多关系的外键