如何添加标记每个值之一的列?

How do I add a column that marks one of each value?

我要加入 SQL 中的两个表。我目前有 SQL 作为:

SELECT table1.ProjectName AS "Project Name",
  table1.ProjectCost AS "Project Cost",
  table2.ExpenseName AS "Expense Name",
  table2.ExpenseCost AS "Expense Cost"
  FROM TABLE1 table1
  INNER JOIN TABLE2 table2
  ON table1.ProjectName = table2.ProjectName;

结果如下:

Project Name    | Project Cost  | Expense Name  | Expense Cost
------------------------------------------------------------
Project 1   | 123456        | Labor     | 12365  
Project 1   | 123456        | Rent      | 120000  
Project 2   | 8421              | (null)    | (null)  
Project 3   | 987654        | Paper     | 1023  
Project 3   | 987654        | Pens      | 546  

我想添加一行来标记每个项目名称之一,以便我可以在 Tableau 中对其进行筛选并计算项目成本的总和。

例如:

Project Name    | Project Cost  | Expense Name  | Expense Cost  | Unique Value
----------------------------------------------------------------------------
Project 1   | 123456        | Labor     | 12365     | Y  
Project 1   | 123456        | Rent      | 12000     | N  
Project 2   | 8421      | (null)    | (null)        | Y  
Project 3   | 987654        | Paper     | 1023      | Y  
Project 3   | 987654        | Pens      | 546       | N  
Project 3   | 987654        | Party     | 9856      | N

我想你可以使用滞后功能,其实我很久以前就问过这个问题,我可以分享我的问题,也许对你有帮助。但是,您可以创建 table 时间 table 并根据滞后函数填充该列,而不是选择值:

您也可以使用排名:

select t.* 
     , case when lag(project_name) over (partition by 1 order by project_name, rownum) = project_name then 'N' else 'Y' end n
     , case when rank() over (partition by project_name order by rownum) >  1 then 'N' else 'Y' end n
from join_result