项目表
PID ProjectName Phase PhaseName Price
16-A XYZ 1 Phase 1 $500
16-A XYZ 2 Phase 2 $500
16-A XYZ 3 Phase 3 $500
17-A ZYX 1 Phase 1 $250
17-A ZYX 2 Phase 2 $250
我想要一个如下所示的输出
PID ProjectName Phase PhaseName Price
16-A XYZ 1 Phase 1 $500
16-A XYZ 2 Phase 2 0
16-A XYZ 3 Phase 3 0
17-A ZYX 2 Phase 2 $250
17-A ZYX 3 Phase 3 0
就像你在上表中的示例所需输出中看到的那样,我想只显示一次$的变化,因为基本上PID的成本是500美元,但PID有3个变体名称。因此,每次变化都需要多次$将在费用报表中显示额外金额。 筛选此功能的最佳方法是什么?
答案 0 :(得分:1)
如果价格始终相同且总是Phase
1,那么:
select
PID
, ProjectName
, Phase
, PhaseName
, Price = case when Phase = 1 then Price else 0 end
from t
如果不总是Phase
1,那么我们可以使用price
获取每个PID
的第一个实例的row_number()
,如下所示:
select
PID
, ProjectName
, Phase
, PhaseName
, Price = case when rn = 1 then Price else 0 end
from (
select *
, rn = row_number() over (
partition by PID
order by Phase
)
from t
) as r
答案 1 :(得分:0)