【问题标题】:List a column's value only once for repeating IDs对于重复 ID,仅列出一次列的值
【发布时间】:2017-04-04 15:33:32
【问题描述】:

我需要帮助修改我的查询,以便每个 ProjectID 只显示一次 PlannedAmount。任何具有重复 ProjectID 的行的 PlannedAmount 都应为 null。

基表:

+------------------------------------------------+ | ProjectID SegmentName 当前MTD | +------------------------------------------------+ | 100 税-国家 20000 | | 100 税-联邦 100000 | | 101 0 号楼 | | 102 土地 0 | | 103 设备 25000 | +------------------------------------------------+

PlannedAmounts 表:

+--------------+ |项目 ID 计划金额 | +--------------+ | 100 140000 | | 103 30000 | +--------------+

我的查询:

SELECT a.ProjectID, a.SegmentName, a.CurrentMTD, NVL(b.PlannedAmount, 0) as PlannedAmount 
FROM Base AS a LEFT JOIN PlannedAmounts AS b ON a.ProjectID = b.ProjectID;

结果:

+-------------------------------------------------- --+ | ProjectID SegmentName CurrentMTD PlannedAmount | +-------------------------------------------------- --+ | 100 税收-州 20000 140000 | | 100 税收-联邦 100000 140000 | | 101 楼 0 0 | | 102 土地 0 0 | | 103 设备 25000 30000 | +-------------------------------------------------- --+

我想要什么:

+-------------------------------------------------- --+ | ProjectID SegmentName CurrentMTD PlannedAmount | +-------------------------------------------------- --+ | 100 税收-州 20000 140000 | | 100 税-联邦 100000 | | 101 楼 0 0 | | 102 土地 0 0 | | 103 设备 25000 30000 | +-------------------------------------------------- --+

我不想为任何重复的 ProjectID 重复 PlannedAmount - 我只想显示一次 - 在任何给定 ProjectID 第一次出现时。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    您可以使用 Case 和 Row_Number(),您修改后的查询

    SELECT a.ProjectID, a.SegmentName, a.CurrentMTD, Case when Row_number() (over partition by a.ProjectId order by a.ProjectId) = 1 then NVL(b.PlannedAmount, 0) else NULL end as PlannedAmount  
        FROM Base AS a LEFT JOIN PlannedAmounts AS b ON a.ProjectID = b.ProjectID;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-04
      • 2020-11-15
      • 2019-08-12
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      相关资源
      最近更新 更多